0

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

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

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

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

“目前没有可用的代码示例,或者可能不支持这种语言。”

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

任何形式的帮助都将受到高度赞赏。谢谢。

4

1 回答 1

4

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

您将使用OpenServiceWin32 API。它返回服务的句柄,或者NULL如果有问题的服务不存在(GetLastError()并将返回ERROR_SERVICE_DOES_NOT_EXIST;还有其他错误原因,所以不要忘记检查)。另外,如果调用成功,请不要忘记CloseServiceHandle调用。这也是您提到的 .NET 类在下面使用的内容。

您还可以在 Windows 注册表中的已安装服务数据库中查找此信息。

或者,您可以从您的安装程序中运行查询此信息的外部命令(例如sc.exe或)。Powershell

于 2013-08-26T10:54:54.047 回答