kn007 发表于 2009-9-8 21:25:04

pusofalse 大哥,请教关于LocalSecurityAuthority.au3的小小问题

使用以下脚本后#include <LocalSecurityAuthority.au3>
If Not IsDeclared("PROCESS_ALL_ACCESS") Then $PROCESS_ALL_ACCESS = 0x1F0FFF
$iAccess = bitOr($POLICY_LOOKUP_NAMES, $POLICY_VIEW_LOCAL_INFORMATION)
$hPolicy = _LsaOpenPolicy($iAccess)
$aAccount = _LsaEnumerateAccountsWithUserRight($hPolicy, $SE_DEBUG_NAME)
If IsArray($aAccount) Then
      For $i = 0 to Ubound($aAccount) - 1
                _LsaRemoveAccountRights($aAccount[$i], $SE_DEBUG_NAME)
      Next
      _LsaClose($hPolicy)
      If Msgbox(49, "", "第一次运行请先注销系统。") = 1 Then
                Shutdown(0)
      EndIf
      Exit
EndIf
$pAcl = _SetEntriesInAcl1("Everyone", $PROCESS_ALL_ACCESS, $DENY_ACCESS)
$sApplication = @ScriptDir & "\abc.exe"
$sArguments = ""
$sSystemProcess = "WinLogon.exe"
$iProcessId = _CreateProcessAsSystem($sApplication, $sArguments, $sSystemProcess, $pAcl)
Msgbox(0, "", "Identifier of the newly created process: " & $iProcessId)重启后,虽然成功使abc.exe进程无法结束,但 unlocker 罢工了,如图

不知是否有解决法子?

现在就算不使用以上源码,unlocker仍然罢工,能不能恢复?

pusofalse 发表于 2009-9-8 22:21:58

是这样的,这就是“创建不被结束的system进程“的BUG所在。
你的unlocker程序极有可能要提升自身到DEBUG权限之后才能正常工作,而提升到DEBUG权限成功的前提是当前用户必须要有DEBUG权限。上面的代码会移除用户的DEBUG权限,所以会使unlocker无法提升特权,它也就不能正常工作了。请下载最新版的库文件,恢复方法如下:#include <LocalSecurityAuthority.au3>
If _LsaAddAccountRight("Administrators", $SE_DEBUG_NAME) Then
   Msgbox(0, "", "成功,注销生效。")
Else
Msgbox(0, "", "失败,错误码:" & @error)
EndIf

kn007 发表于 2009-9-8 23:21:37

Roger that

Very Well

It's work

Thank you

kn007 发表于 2009-9-8 23:28:28

另外:2楼可以破解 冰点 修改系统权限导致unlocker失效!


十分感谢pusofalse 大哥






PS1:记得重启
PS2:不行的话,就把Administrators,改为Administrator,试试
页: [1]
查看完整版本: pusofalse 大哥,请教关于LocalSecurityAuthority.au3的小小问题