Service 如何在Win32服务中防止系统关闭或重新启动?

Service 如何在Win32服务中防止系统关闭或重新启动?,service,events,shutdown,restart,power-management,Service,Events,Shutdown,Restart,Power Management,我想阻止用户关闭或重新启动系统。我的应用程序作为Win32本机服务(由C++编写)在LocalSystem帐户下运行 我听说了WM_QUERYENDSESSION它的解决方案:创建一个隐藏窗口并捕获WM_QUERYENDSESSION以防止关机 但是这个解决方案并不是很干净,而且必须为每个桌面创建一个窗口。因此,我必须枚举桌面,还要关心桌面何时创建/销毁。所有这些都让情况变得糟糕 有没有办法检测关机/重启事件并防止系统关机/重启 (关闭或重新启动事件并不重要,两者都必须取消!)您不能这样做 因为

我想阻止用户关闭或重新启动系统。我的应用程序作为Win32本机服务(由C++编写)在LocalSystem帐户下运行

我听说了WM_QUERYENDSESSION它的解决方案:创建一个隐藏窗口并捕获WM_QUERYENDSESSION以防止关机

但是这个解决方案并不是很干净,而且必须为每个桌面创建一个窗口。因此,我必须枚举桌面,还要关心桌面何时创建/销毁。所有这些都让情况变得糟糕

有没有办法检测关机/重启事件并防止系统关机/重启

(关闭或重新启动事件并不重要,两者都必须取消!)

您不能这样做

因为允许程序阻止关机/重启会有点安全漏洞,你不觉得吗

如果用户告诉系统关闭或重新启动,就会发生这种情况


顺便说一句,当前用户注销Windows时会传递WM_QUERYENDSESSION。它只是一个通知,仅此而已,如果您以任何其他方式使用它,那么您就是在错误地使用它。

现在,如果您能够防止自动重新启动,您将真的拥有一些东西@呼呼:我当然不会这么做!我正在开发一个管理网吧的软件。软件功能之一必须是防止系统关闭。所以我不需要一个100%的解决方案,但它应该防止关机是正常的情况。因此,在这种情况下,这不是安全漏洞。微软不关心什么对一个人最好;他们关心什么对大多数用户来说是最好的。对于大多数Windows计算机来说,允许程序阻止重新启动/关闭肯定是一个安全漏洞。如果您确实需要这种功能,您应该查看组策略设置,从“开始”菜单禁用重新启动/关闭。或者,联系以下实用程序之一的作者:我需要一种方法来防止在我想要的时候关机。有时应允许停机,有时应防止停机。组策略在资源管理器上应用规则。因此,当我更改策略时,我必须重新启动Explorer.Exe。因此,我必须检测当前用户并将其插入,然后使用他的令牌创建流程。我说得对吗?