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!