如何使用c / c ++启动/停止名称中包含空格的Windows服务

时间:2012-04-27 16:21:42

标签: visual-c++ windows-services

我正在尝试编写一个启动/停止我系统的任何Windows服务的c / c ++应用程序。

我的应用程序适用于名称之间没有空格的服务,但对于它们之间有空格的服务名称没有响应。

以下是我用于打开服务的命令:

SC_HANDLE serviceDbHandle = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
SC_HANDLE serviceHandle = OpenService(serviceDbHandle,
                                      "My Service",
                                      SC_MANAGER_ALL_ACCESS);

此处"My Service" - 第二个参数为LPCSTR,其空终止正在产生问题。

如何启动/停止名称中包含空格的服务 - 任何线索或建议都会有所帮助。

我在xp机器上使用Visual Studio 2005。

谢谢,

Anil

1 个答案:

答案 0 :(得分:1)

您需要使用服务的内部名称(没有空格),而不是显示名称(可能)。

来自MSDN

  

要打开的服务的名称。这是创建服务对象时lpServiceName函数的CreateService参数指定的名称,不是用户界面应用程序显示的用于标识服务的服务显示名称