Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
Re: Rückgabewert von CreateProcessWithLogonW und GetLastErro
23. Jan 2005, 14:20
Zitat von tommie-lie:
Also folgendes funktioniert bei mir:
Delphi-Quellcode:
function CreateProcessAsLogon(const User, PW, Application, CmdLine: WideString):
LongBool;
var
si : TStartupInfoW;
pif : TProcessInformation;
WUser : WideString;
WPW : WideString;
WApp : WideString;
WCmdLine : WideString;
begin
ZeroMemory(@si, sizeof(si));
si.cb := sizeof(si);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := 1;
WUser := User;
WPW := PW;
WApp := Application;
WCmdLine := CmdLine;
result := CreateProcessWithLogonW(PWideChar(WUser), nil, PWideChar(WPW),
LOGON_WITH_PROFILE, PWideChar(WApp), PWideChar(WCmdLine),
CREATE_DEFAULT_ERROR_MODE, nil, nil, @si, @pif);
if not result then
MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Testanwendung', MB_ICONSTOP);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
User, PW, Filename, Params: WideString;
begin
User := Edit1.Text;
PW := Edit2.Text;
Filename := Edit3.Text;
Params := Edit4.Text;
CreateProcessAsLogon(User, PW, Filename, Params)
end;
Mit Parameter, mit ohne Parameter, mit falschen Passwrt, mit richtigem Passwort, Username, immer das erwartete Ergebnis.
Also GetLastError ist nicht null? Aber wo liegt da der Unterschied zu meinem urspünglichem Code? Du hast übrigens Windows XP oder? Leider bin ich gerade bei meiner Freundin und kann das wohl erst heute Abend ausprobieren. Als ich es getrennt ausprobiert habe, also Anwnedung und CommandLine separate angegeben habe, hat er die Coomadline nicht verarbeitet, denn ich meinen, deinen Code hatte icfh auch schon mal ausprobiert.
Michael Ein Teil meines Codes würde euch verunsichern.
|
|
Zitat
|