- procedure debugs; stdcall;
- var
- NewState: TTokenPrivileges;
- lpLuid: Int64;
- ReturnLength: DWord;
- hAccessToken: THandle;
- a: Boolean;
- begin
- a := OpenProcessToken(GetCurrentProcess, TOKEN_Adjust_Privileges, // 获取进程令牌, 成功返回非 0, 失败返回 0,
- hAccessToken);
- ShowMessage(BoolToStr(a) + ' ' + IntToStr(GetLastError())); // a=0 则失败, 成功则 getlasterror 为 0
- LookupPrivilegeValue(nil, 'SeDebugPrivilege', lpLuid); //debug 权限
- NewState.PrivilegeCount := 1;
- NewState.Privileges[0].Luid := lpLuid;
- NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
- ReturnLength := 0;
- AdjustTokenPrivileges(hAccessToken, False, NewState, 0, nil, ReturnLength); // 提权函数
- end;
来源: http://www.bubuko.com/infodetail-3113811.html