我正在使用一个应用程序开发一个简单的 NT 服务,该应用程序将监视它并在任务栏中显示状态。在启动监视器时检查服务是否正在运行,如果没有则提示启动它。这很好,直到重新启动时监视器在服务之前启动并提示启动它,即使它会自动启动。
通过阅读文档,我认为状态将报告为 SERVICE_START_PENDING
,这是服务在进入服务主函数时所做的第一件事,但状态似乎报告为 SERVICE_STOPPED
如果 SCM 尚未开始启动服务。有什么方法可以检测到服务将很快开始吗?
谢谢, J
最佳答案
我认为没有任何方法可以预测服务控制管理器将来会做什么。但是,我可以想到一些可以缓解您的情况的事情:
定期监控服务状态,当它进入“启动”时,适当更新您的图标状态
检查进程的自动启动设置,如果设置为自动,而您的监控程序才刚刚启动,则延迟报告服务未运行(假设它可能很快就会启动)。
关于c++ - 如何检测自动NT服务是否会启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947514/