我是Windows API的新手。我正在试图弄清楚如何阻止系统关闭。我想出了SERVICE_CONTROL_PRESHUTDOWN
。目前还不确定如何使用它,但我计划在HandlerEx以下的行中做一些事情:
DWORD WINAPI serviceHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
{
switch (dwControl)
{
case SERVICE_CONTROL_PRESHUTDOWN:
while (1)
Sleep(1000);
}
return NO_ERROR;
}
但是A.)我不确定我是否正确阅读MSDN,并正确实现此serviceHandler
,以及B.)是否有更好的方法可以做到这一点。我基本上需要这个应用程序不允许关闭,除非强行按住电源按钮。
答案 0 :(得分:2)
您不能无限制地阻止系统关闭。请参阅HandlerEx
回调函数的备注:
只应处理SERVICE_CONTROL_SHUTDOWN控制代码 在关机期间必须绝对清理的服务,因为那里 是一个有限的时间(约20秒)可用于服务关闭。 在此时间结束后,无论如何都会继续系统关闭 服务关闭是否完成
最多20秒后,Windows将终止您的服务并继续关机过程。
答案 1 :(得分:1)
您应该部署多个组策略,而不是从代码中执行此操作,如下所述:http://www.sevenforums.com/tutorials/128920-shut-down-computer-allow-prevent-users-groups.html
答案 2 :(得分:0)
服务关闭的时间有限。
20秒将帮助您阻止系统关闭。
PC将执行类似于“ shutdown -t 20 -s
” 的操作,然后快速输入 Windows徽标 + R \ “ shutdown -a
” ,以上命令将被取消。
可以使用WinExec ()
或CreateProcess ()
轻松实现。