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

标签 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++。

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

最佳答案

更新:我在下面留下答案,但实际上这是 this 的拷贝我这样标记它。

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

您还可以在 Database of Installed Services, in the Windows Registry 中查找此信息.

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

关于c++ - 检查是否安装了 Windows 服务? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18442352/

相关文章:

c++ - 使用 boost 检查端口可用性

.net - 使用 C++ 检查客户端上可用的 .NET 框架

windows - 使用 Windows IStream 下载文件

.net - Windows 服务在从 3.5 迁移的 Windows Server 2008、x64、.NET 4 上引发 System.BadImageFormatException

C# Windows 服务 While 循环

c++ - 将 QSslSocket 与 OpenSSL 服务器连接

c++ - 将 Unicode 值分配给 char

c++ - 通过 "const int"指针更改 "int *"。惊喜又有趣

c++ - CreateProcessAsUser 生成错误 5

.net - 机器的最大 TCP 连接数