c++ - 如何检测自动NT服务是否会启动

标签 c++ windows winapi windows-services

我正在使用一个应用程序开发一个简单的 NT 服务,该应用程序将监视它并在任务栏中显示状态。在启动监视器时检查服务是否正在运行,如果没有则提示启动它。这很好,直到重新启动时监视器在服务之前启动并提示启动它,即使它会自动启动。

通过阅读文档,我认为状态将报告为 SERVICE_START_PENDING,这是服务在进入服务主函数时所做的第一件事,但状态似乎报告为 SERVICE_STOPPED 如果 SCM 尚未开始启动服务。有什么方法可以检测到服务将很快开始吗?

谢谢, J

最佳答案

我认为没有任何方法可以预测服务控制管理器将来会做什么。但是,我可以想到一些可以缓解您的情况的事情:

  • 定期监控服务状态,当它进入“启动”时,适当更新您的图标状态

  • 检查进程的自动启动设置,如果设置为自动,而您的监控程序才刚刚启动,则延迟报告服务未运行(假设它可能很快就会启动)。

关于c++ - 如何检测自动NT服务是否会启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947514/

相关文章:

c++ - 是否可以对非常大的 STL 字符串进行浅拷贝?

windows - 列出在 Windows 上导出的 nfs 共享

windows - 在 Windows 中启动后立即自动终止进程

c - 为什么第二次调用 RasGetEntryProperties() 返回正在进行的重叠 I/O 操作?

c++ - 至少有时将 uint8_t 转换为 signed int 是不正确的吗?

c++ - 尝试使用 gdb 调试 LLVM pass,gdb 说找不到调试符号?

c# - 将非托管和托管 dll 合并为 DotNet 中的单个 dll

linux - 在Windows 和Linux 下都写C 会导致编译问题吗?

c++ - 为什么 Windbg 无法在内核模式转储中显示我的用户模式调用堆栈?

c++ - 在给定按钮窗口句柄的情况下,如何模拟按钮单击?