1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
var
TokenHandle, ReturnLength: Cardinal;
NewState, PreviousState: TTokenPrivileges;
lpLuid: TLargeInteger;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TokenHandle) then
begin
try
if LookupPrivilegeValue(nil, 'SeBackupPrivilege', lpLuid) then
begin
NewState.PrivilegeCount := 1;
NewState.Privileges[0].Luid := lpLuid;
NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(TokenHandle, False, NewState, SizeOf(NewState), PreviousState, ReturnLength) then
begin
RegSaveKeyW(...)
end;
end;
finally
CloseHandle(TokenHandle);
end;
end; |