c++ - 如何捕获从 Windows 服务启动的 session 注销

标签 c++ windows service logoff

我有一项服务会不断检查某些应用程序并确保它没有关闭。如果此应用程序关闭 - 服务会再次启动它。

当用户决定注销 session 时,问题就开始了。在注销期间,所有应用程序都将关闭,包括我的应用程序。但该服务仍在运行,并不断尝试重新启动它。

问题是如何通知服务用户将要注销并且应用程序不再需要重新启动?我试图使用 SERVICE_CONTROL_SESSIONCHANGE 通知来实现它。但是根据 MSDN,当所有应用程序已经关闭并完成注销程序时,他们才会提供服务。对我来说太晚了。有什么方法可以通过编程方式查明当前 session 正在注销吗?

我的服务在 LocalSystem 帐户下启动。

谢谢。

附注我无权访问应用程序源代码。目标需要在不修改的情况下实现。

最佳答案

让您的服务运行两个应用程序:一个是它的看门狗,另一个是您自己实现的。然后,第二个可以通过向服务发送消息来响应注销事件(David Heffernan 的回答),然后服务将知道不要重新启动监视的作业。

关于c++ - 如何捕获从 Windows 服务启动的 session 注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5929328/

相关文章:

javascript - 用于多线程的 v8 储物柜

c++ - 有没有人有书面证据确保函数中参数的定义方式与普通变量声明相同?

c++ - 我无法创建窗口

windows - 互斥锁和临界区有什么区别?

c++ - 我们如何调试在 C++ 应用程序中使用的 matlab 制作的 DLL?

c++ - 以 boost::bind 作为参数的函数签名(boost::asio 计时器回调)?

css - 如何在 Windows 操作系统上为 Firefox 指定单独的样式

android - 如何将 Service 与 BroadcastReceiver 结合使用?

service - 如何在 Docker 后台启动 railo 服务

windows - 如何获取多线程Windows Service应用程序中正在运行的线程数