【发布时间】:2015-06-24 17:26:33
【问题描述】:
我有一个 C++ 桌面应用程序,它与一个外国(不是我写的)Windows 8.1 本地服务对话。该服务与 USB 设备对话。不幸的是,即使使用 USB 设备管理器实用程序正确地分离了 USB 设备,该服务也存在一个错误,它会导致它在 USB 设备被分离时变得无响应。目前我必须进入 Windows 8.1 本地服务控制面板并手动重启服务。
我可以检测到我的应用程序是否没有响应该服务。所以我想要做的是,如果在启动时我检测到这种情况,我会从我的应用程序重新启动服务。是否有 WinApi 或其他可用的调用或技术可以帮助我做到这一点?我发现了一些像这样的 C# 示例:
How to restart windows service?
但 C++ 没有。我正在使用 Visual Studio 2013 进行开发。
【问题讨论】:
-
您的桌面应用程序是否运行提升?如果没有,那么你可能不走运。您可能需要创建一个单独的进程,最好是作为监护人服务,以保持其他服务处于活动状态。
-
@DavidHeffernan 谢谢。我能做的是启动另一个应用程序,提示用户提升权限并重新启动。有点令人费解,但比指导新手用户使用本地服务控制面板重新启动服务要少。
-
安装一个专门的守护服务进行重启,然后可以完全屏蔽用户
标签: c++ winapi device-driver