本文整理自网络,侵删。
type HANDLE = THandle; PTOKEN_PRIVILEGES = ^TOKEN_PRIVILEGES;
Function AdjustTokenPrivileges( TokenHandle: HANDLE; DisableAllPrivileges: BOOL; NewState: PTOKEN_PRIVILEGES; BufferLength: DWORD; PreviousState: PTOKEN_PRIVILEGES; ReturnLength: PDWORD): BOOL; stdcall; external advapi32;
//==============================================================================
Function SetPrivilege(const PrivilegeName: String; Enable: Boolean): Boolean;var Token: THandle; TokenPrivileges: TTokenPrivileges;beginResult := False;If OpenProcessToken(GetCurrentProcess,TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES,{%H-}Token) thentry If LookupPrivilegeValue(nil,PChar(PrivilegeName),{%H-}TokenPrivileges.Privileges[0].Luid) then begin TokenPrivileges.PrivilegeCount := 1; TokenPrivileges.Privileges[0].Attributes := Ord(Enable) * SE_PRIVILEGE_ENABLED; If AdjustTokenPrivileges(Token,False,@TokenPrivileges,0,nil,nil) then Result := GetLastError = ERROR_SUCCESS; end;finally CloseHandle(Token);end;end;
//用法 SetPrivilege('SeDebugPrivilege',True);
相关阅读 >>
Delphi firedac 下的 sqlite [7] - 备份、优化、事务(transaction)
Delphi winapi: movewindow - 改变窗口的位置与大小
更多相关阅读请进入《Delphi》频道 >>