阅读:1238回复:0
不知道这是不是一个快速关机的途径
我用的系统是xp,经常发生关机不响应,运行程序也行,就是不肯关机,不知道大家有没有这样的经历
一般windows关机调用的是ExitWindowsEx这个函数,可是好像有时不响应,我也不知道为什么。 如果win的一些服务,比如rpc被强制关掉,win会强制关机或重启,调用的是InitiateSystemShutdown这个函数。这个咚咚好像比较powerful一点,每次不响应我都是关rpc让系统一分钟以后自动重启,省得直接按power键回头自检。 至于为什么win重启或者关机在不同的情况下调用不同的函数,我不清楚,请高手指点。还有使用InitiateSystemShutdown是不是有什么缺陷也是我不懂的。MSDN的建议是把所有top-level的windows都历遍,挨个请求关闭,这样可能安全一点。 不过如果自己注意把一些要保存的程序关闭了,比如word什么的,用下面的程序确实能快一点。个中原因,请大家不吝指教了。 代码简单的我都不好意思贴出来了 //Shutdown the machine #include <windows.h> #include <stdio.h> void main() { HANDLE hToken; TOKEN_PRIVILEGES tkp; if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) return; LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); tkp.PrivilegeCount=1; tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0); InitiateSystemShutdown( NULL, NULL, 0, TRUE, FALSE ); } |
|
最新喜欢:![]() |