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