本文整理自网络,侵删。
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 时间与相关类型(3): tfiletime、tsystemtime 及 dos 时间
Delphi xe 如何实现("再按一次退出") 然后退出程序
更多相关阅读请进入《Delphi》频道 >>