1

我正在尝试编写启动/停止我系统的任何 Windows 服务的 ac/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。

谢谢,

阿尼尔

4

1 回答 1

1

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

来自MSDN

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

于 2012-04-27T16:28:43.467 回答