我有一项服务会不断检查某些应用程序并确保它没有关闭。如果此应用程序关闭 - 服务会再次启动它。
当用户决定注销 session 时,问题就开始了。在注销期间,所有应用程序都将关闭,包括我的应用程序。但该服务仍在运行,并不断尝试重新启动它。
问题是如何通知服务用户将要注销并且应用程序不再需要重新启动?我试图使用 SERVICE_CONTROL_SESSIONCHANGE 通知来实现它。但是根据 MSDN,当所有应用程序已经关闭并完成注销程序时,他们才会提供服务。对我来说太晚了。有什么方法可以通过编程方式查明当前 session 正在注销吗?
我的服务在 LocalSystem 帐户下启动。
谢谢。
附注我无权访问应用程序源代码。目标需要在不修改的情况下实现。
最佳答案
让您的服务运行两个应用程序:一个是它的看门狗,另一个是您自己实现的。然后,第二个可以通过向服务发送消息来响应注销事件(David Heffernan 的回答),然后服务将知道不要重新启动监视的作业。
关于c++ - 如何捕获从 Windows 服务启动的 session 注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5929328/