1,183
社区成员
发帖
与我相关
我的任务
分享
function AddPrivilege(AProcID: THandle; const SecuName: PChar): Boolean;
var
hToken: Thandle;
tp: Token_Privileges;
rl: Cardinal;
begin
Result := false;
if not (OpenProcessToken(AProcID, Token_Adjust_Privileges or Token_Query, hToken)) then exit;
try
if not LookupPrivilegeValue(nil, SecuName, tp.Privileges[0].Luid) then exit;
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tp, Sizeof(TOKEN_PRIVILEGES), Nil, rl) then Result := True;
finally
CloseHandle(hToken);
end;
end;
......
var
RegFile: String;
reg:Tregistry;
begin
AddPrivilege(GetCurrentProcess(), 'SeBackupPrivilege');
RegFile := 'd:\test.reg';
if FileExists(RegFile) then DeleteFile(RegFile);
reg.rootkey:=HKEY_CURRENT_USER;
if reg.Savekey('Software\test', RegFile) then
showmessage('true')
else
showmessage('false');
reg.CloseKey;
reg.Free;
end;