Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
RAD-Studio 2009 Ent
|
[gelöst]Impersonate in TService
21. Aug 2013, 18:21
Hi zusammen...
Ich verwende seit ewigen Zeiten das Impersonate von Luckies webseite. Klappt auch immer ganz prima. Nur leider scheinen die Gegebenheiten innerhalb eines Services etwas anders.
Hier ist mein Code:
Delphi-Quellcode:
function Impersonate(const aUser, aPass: string): Boolean;
var
LogonType : Integer;
LogonProvider : Integer;
strUser : String;
strDomain : String;
strPassword : String;
Token: THandle;
begin
LogonType := LOGON32_LOGON_INTERACTIVE;
LogonProvider := LOGON32_PROVIDER_DEFAULT;
strUser := aUser;
strDomain := '';
strPassword := aPass;
Result := LogonUser(PChar(strUser), nil, PChar(strPassword), LogonType, LogonProvider, Token);
generateLog('muh1');
if Result then
begin
generateLog('muh2');
Result := ImpersonateLoggedOnUser(Token); // hier bleibts hängen
generateLog('muh3');
end;
end;
// Der Aufruf:
generateLog('vorher-'+GetUsername);
Impersonate('User', 'Pass');
generateLog('nachher-'+GetUsername);
im Log dann Folgendes:
Und dann bleibt der Prozess hängen. Gelten für den System-User andere Regeln? Gibt es nen anderen Weg?
Gruß,
Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
Geändert von Tonic1024 (22. Aug 2013 um 10:48 Uhr)
|