检查是否安装了Windows服务? (C ++)

时间:2013-08-26 10:50:16

标签: c++ windows windows-services

我用C ++编写了一个Windows服务,它工作得很好,现在我想添加一个功能,当我尝试安装它时,可以先检查是否已安装它?

我试图寻找有关如何完成此任务的想法,但那里没有太多帮助。大多数问题和教程都是针对C#程序员的,他们使用ServiceController来完成他们的任务,但是我无法在C ++中访问任何这样的类。

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx

上面的链接在其示例部分中没有显示此类的示例,并说:

"目前没有代码示例,或者可能不支持此语言。"

其他资讯: 我使用的是Windows 7 64位, Visual Studio 2008, 语言是C ++。

非常感谢任何形式的帮助。感谢。

1 个答案:

答案 0 :(得分:3)

更新:我在下面留下答案,但实际上这是this的副本,我将其标记为。

您将使用OpenService Win32 API。它返回服务的句柄,如果相关服务不存在,则返回NULLGetLastError()将返回ERROR_SERVICE_DOES_NOT_EXIST;还有其他错误原因,所以不要忘记检查一下)。另外,如果呼叫成功,请不要忘记拨打CloseServiceHandle。这就是你提到的.NET类在下面使用的内容。

您还可以在Database of Installed Services, in the Windows Registry上查看此信息。

或者,您可以从查询此信息的安装程序中运行external commands(例如sc.exePowershell)。