Habe es mit CreateProcessAsUser probiert, klappt aber nicht. Für den Aufruf braucht man den LoginHandle. Habe ich also erzeugt aber irgendwas scheint schon damit nicht zu klappen. Ich bekomme immer 1341560 zurück. Laut Hilfe ist alles außer 0 ein gültiger
Handle, was komisch ist, weil ich die Zahl auch bekomme, wenn ich falsche Anmeldeinfos angebe.
Hier mein Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
LogonHandle: THandle;
StartupInfo : TStartupinfo;
ProcessInfo : TProcessInformation;
begin
LogonUser(pchar(Edit1.Text), pchar(Edit2.Text), pchar(Edit3.Text),0,LOGON32_LOGON_INTERACTIVE,LogonHandle);
if LogonHandle = 0 then begin
ShowMessage(IntToStr(GetLastError) + ' Fehler beim LogonHandle!');
end else
ShowMessage(IntToStr(LogonHandle) + ' ist der LogonHandle!');
FillChar(Startupinfo, SizeOf(TStartupinfo),0);
Startupinfo.cb:=Sizeof(TStartupInfo);
CreateProcessAsUser(LogonHandle,
Nil,
pchar(Edit4.Text),
Nil,
Nil,
TRUE,
CREATE_DEFAULT_ERROR_MODE,
Nil,
Nil, // noch anpassen soll ja Env vom User verwendet werden
Startupinfo,
ProcessInfo );
end;
Hat jemand ein funktionierendes Beispiel für CreateProcessAsUser? Es gibt hier im Forum zwar viele Hiweise wie "Benutze halt CreateProcessAsUser" aber leider kein Beispiel.
Danke