【问题标题】:Wait for Service to Start/Stop等待服务启动/停止
【发布时间】:2011-06-09 13:02:04
【问题描述】:

我正在使用 C++ 中的服务控制器来管理 Windows 服务。

我可以使用StartService( )ControlService( ) 函数来启动和停止服务。

但是,是否有标准的方法来等待服务实际启动和停止?

我显然可以循环调用QueryServiceStatusEx( ) 并等待状态分别为RunningStopped

有没有更简洁的方法来实现同样的目标?

谢谢。

【问题讨论】:

  • 您可以控制其他服务吗?
  • 是的,我可以启动和停止服务。但是我需要一种方法来等到服务停止,以便我可以在重新启动之前编辑配置文件。
  • 我的意思是你可以访问它的源代码。如果是这样,您可以创建一个事件并等待。
  • 啊,不抱歉,这是第 3 方服务。但是那个事件不是只存在于服务中吗?或者是否有可能拥有全球可访问的事件?
  • 我一直使用轮询来完成。你可以使用NotifyServiceStatusChange,但这看起来很糟糕。

标签: c++ windows-services


【解决方案1】:

Afaik 服务启动和停止创建 Windows 事件日志事件。也许您可以为它们安装一个处理程序并等待来自您的应用程序的事件。如果您的应用程序也是一个服务,则将其标记为依赖于 3rd 方服务,那么您不必等待它。

【讨论】:

    【解决方案2】:

    在 C# 中,您可以使用 ServiceController.WaitForStatus 执行此操作。您可以这样做(一行代码)并将 C# 包装在您的 C++ 代码中。

    否则,您可能会在 WMI (Win32_Service class) 或事件日志中胡闹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2019-04-11
      • 1970-01-01
      • 2018-12-20
      相关资源
      最近更新 更多