// 参数:权限名称 ,返回: 成功返回TRUE
Function AdjustProcessPrivilege(Token_Name: Pchar): Boolean;
var
Token: Cardinal;
TokenPri: TOKEN_PRIVILEGES;
ProcessDest: int64;
PreSta: DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,Token) then
begin
if LookupPrivilegeValue(nil,Token_Name,ProcessDest) then
begin
TokenPri.PrivilegeCount := 1;
TokenPri.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
TokenPri.Privileges[0].Luid := ProcessDest;
PreSta := 0;
if AdjustTokenPrivileges(Token,False,TokenPri,sizeof(TokenPri),nil,PreSta) then
begin
Result := True;
end;
end;
end;
end;
//调用方式
AdjustProcessPrivilege('SeDebugPrivilege');