我编写了一个应用程序并使用服务来启动它。全部使用C ++,在Windows 7上。我的查询类似于How can a Windows Service determine its ServiceName?
有没有办法在运行时确定(在C ++中)可执行文件中启动该可执行文件的服务的名称。
只需要一个正确方向的指针。
由于
答案 0 :(得分:0)
您可以使用EnumServicesStatus
获取所有服务的列表,然后对其进行过滤,我想最好的方法是比较二进制名称。然后调用QueryServiceConfig
以获取包括服务名称的服务配置。
我希望这就是你要找的东西。
当然,要执行此操作,您的应用程序必须在Windows Vista和7中以管理员身份运行,否则对OpenSCManager
的调用肯定会失败。
修改强> 另一种快速方法是将服务名称硬编码在服务和可执行文件之间共享的def文件中,或者在单独的配置文件中,因此消除了SCManager的所有麻烦