写一个小的代码 ,怎样阻止系统重启
本帖最后由 leon460 于 2011-3-30 16:58 编辑有时候我关闭win7时,发现系统说某个进程正在阻止电脑关闭
请问怎样用autoit实现这个功能?我初步推断是 程序调用系统某些东西,
有试过的哥们给个代码测试下,,谢谢了
补充说明下,我要的效果是:运行一个脚本后,系统不能关机或者启动了。 shutdown(6) 回复 2# boyhong
厄,这个是强制重启吧 回复 2# boyhong
呵呵,理解错误了,我要的效果是系统在运行此脚本后,不能自然关机或者 重启电脑 回复 2# boyhong
呵呵,理解错误了,我要的效果是系统在运行此脚本后,不能自然关机或者 重启电脑 我也想知道怎么实现,还有就是运行了如果按了重启键又怎么办 win7系统好用吗? 回复 7# lxz
我说蛮好用的了,不过要看自己试试看了,,好像偏离主题了-- 呵呵呵 自己再顶下,希望有知道的人帮忙下 win7用得不是很舒服 再次顶下,盼望有经验的人过来看看 没听说过关机还能阻止的,占位看高人解答 http://www.vbaccelerator.com/home/VB/Tips/Preventing_Logoff_or_Shutdown/article.asp
看看这个.... 提示某个进程正在阻止电脑关闭,应该是那个进程截取了WM_QUERYENDSESSION消息,我用此方法在XP SP3中测试没成功过,论坛中有这样的一个例子。
以下这段代码,删除explorer.exe进程令牌中的SeShutdownPrivilege特权,阻止通过explorer关机、重启或待机。在XP SP3中测试成功,在WIN7中应该也可以。
#include <Thread.au3>
#include <lsasecur.au3>
Local $hThread, $hToken, $hRestrictToken, $hDupToken, $aPriv = [$SE_SHUTDOWN_PRIV]
_RTGetWindowThreadProcessId(WinGetHandle(""))
$hThread = _SeOpenThread(@extended, $SE_THREAD_SET_THREAD_TOKEN)
If $hThread < 1 Then
MsgBox(48, "Error", _SeFormatMsg())
Exit
EndIf
$hToken = _SeOpenProcessToken(-1)
$hRestrictToken = _SeCreateRestrictedToken($hToken, 0, 0, $aPriv, 0)
$hDupToken = _SeDuplicateTokenEx($hRestrictToken, $SE_TOKEN_IMPERSONATION)
If _SeSetThreadToken($hThread, $hDupToken) Then
MsgBox(48, "OK", _SeFormatMsg("", 0))
Else
MsgBox(48, "Error", _SeFormatMsg())
EndIf
_SeCloseHandle($hDupToken)
_SeCloseHandle($hRestrictToken)
_SeCloseHandle($hToken)
_SeCloseHandle($hThread)
回复 14# pusofalse
win7会不太正常
测试完毕
页:
[1]
2