Thema: Delphi Privilegien setzen

Einzelnen Beitrag anzeigen

runger
(Gast)

n/a Beiträge
 
#1

Privilegien setzen

  Alt 10. Jun 2005, 07:04
Hallo,
ich habe Luckies Funktion zur Änderung der Privilegien ausprobiert.

Delphi-Quellcode:
function EnablePrivilege(const Privilege: string; fEnable: Boolean; out
  PreviousState: Boolean): DWORD;
var
  Token : THandle;
  NewState : TTokenPrivileges;
  Luid : TLargeInteger;
  PrevState : TTokenPrivileges;
  Return : DWORD;
begin
  PreviousState := True;
  if (GetVersion() > $80000000) then
    // Win9x
    Result := ERROR_SUCCESS
  else
  begin
    // WinNT
    if not OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token) then
      Result := GetLastError()
    else
    try
      if not LookupPrivilegeValue(nil, PChar(Privilege), Luid) then
        Result := GetLastError()
      else
      begin
        NewState.PrivilegeCount := 1;
        NewState.Privileges[0].Luid := Luid;
        if fEnable then
          NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
        else
          NewState.Privileges[0].Attributes := 0;
        if not AdjustTokenPrivileges(Token, False, NewState,
          SizeOf(TTokenPrivileges), PrevState, Return) then
          Result := GetLastError()
        else
        begin
          Result := ERROR_SUCCESS;
          PreviousState :=
            (PrevState.Privileges[0].Attributes and SE_PRIVILEGE_ENABLED <> 0);
        end;
      end;
    finally
      CloseHandle(Token);
    end;
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
var a:boolean;x:dword;
begin
  x:=EnablePrivilege('SE_SYSTEMTIME_NAME',false,a);
end;
Ich werde immer hier rausgeworfen. Egal was ich an Privileg eingebe.
Was mach ich falsch?

Delphi-Quellcode:
    try
      if not LookupPrivilegeValue(nil, PChar(Privilege), Luid) then
        Result := GetLastError()
      else
Rainer
  Mit Zitat antworten Zitat