Einzelnen Beitrag anzeigen

Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Impersonate Programm als Admin starten

  Alt 11. Dez 2008, 08:09
Hi

Ich versuche eine andere Anwendung als lokaler Admin zu starten und zwar mit Impersonate und ShellExecute...

Leider funktioniert das ganze nicht... das Programm wird zwar gestartet, aber nicht als Admin sondern als angemeldeter Benutzer...
was mache ich falsch?

Delphi-Quellcode:
program startsignout;

{$APPTYPE CONSOLE}

uses
  Windows,Sysutils,ShellAPI;

var
  USER:String='Administrator';
  PW:String='xxxxxx';
  TokenHandle : THandle;

// Impersonates other user ...
function Impersonate(const User, PW: string): Boolean;
var
  LogonType : Integer;
  LogonProvider : Integer;
  strAdminUser : string;
  strAdminDomain : string;
  strAdminPassword : string;
begin
  LogonType := LOGON32_LOGON_INTERACTIVE;
  LogonProvider := LOGON32_PROVIDER_DEFAULT;
  strAdminUser := USER;
  strAdminDomain := '';
  strAdminPassword := PW;
  Result := LogonUser(PChar(strAdminUser), nil,
    PChar(strAdminPassword), LogonType, LogonProvider, TokenHandle);
  if Result then
  begin
    Result := ImpersonateLoggedOnUser(TokenHandle);
  end;
end;

begin

  if Impersonate(USER, PW) then
  begin
    ShellExecute(TokenHandle, 'open', PChar('signout'), nil, nil, SW_SHOWNORMAL) ;
    RevertToSelf;
    //WinExec('signout.exe', SW_SHOW); [EDITED]
  end
  else
  begin
    WriteLn(PChar(SysErrorMessage(GetLastError)));
    readln;
  end;

end.
Danke schon mal für Deine Hilfe!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat