出错的可能原因:
1, 系统问题,或者以上代码不是在管理员权限下运行。
2, 当前系统中的Winlogon.exe不是系统权限。
3, 当前系统中的explorer.exe不是当前登录用户所创建。
将自身进程提升到系统级,方法有很多。
临时文件、进程的用户名、运行参数。。。我觉得根据进程的用户名,判断是否是系统权限这种方法最保险。
还是算了,用最简单的创建临时文件法吧:#include <LocalSecurityAutority.au3>
If Not FileExists(@TempDir & "\RaiseToSystem.tmp") Then
FileWrite(@TempDir & "\RaiseToSystem.tmp", 1)
If @Compiled Then
$sApp = @ScriptFullPath
$sArg = " " & $CmdLineRaw
Else
$sApp = @AutoItExe
$sArg = " " & FileGetShortName(@ScriptFullPath) & " " & $CmdLineRaw
EndIf
_CreateProcessAsSystem($sApp, $sArg, "Winlogon.exe")
Exit
Else
FileDelete(@TempDir & "\RaiseToSystem.tmp")
EndIf
Msgbox(0, '', "User name: " & @UserName)
|