Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Rückgabewert von CreateProcessWithLogonW und GetLastError

  Alt 19. Jan 2005, 15:04
Ich habe hier ein dummes Problem. Erstmal der Code:

Delphi-Quellcode:
if not CreateProcessAsLogon(User, PW, Filename, Params)then
  begin
    MessageBox(hDlg, PChar(SysErrorMessage(GetLastError)), APPNAME, MB_ICONSTOP);
    // ExitCode: ID_CANCEL -> don't close main window
    ExitCode := ID_CANCEL;
  end
  else
    // ExitCode: ID_OK -> close main window
  ExitCode := ID_OK;
end
CreateProcessAsLogon sieht so aus:
Delphi-Quellcode:
function CreateProcessAsLogon(const User, PW, Application, CmdLine: WideString):
  LongBool;
var
  si : TStartupInfoW;
  pif : TProcessInformation;
begin
  ZeroMemory(@si, sizeof(TStartupInfo));
  si.cb := SizeOf(TStartupInfoW);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := 1;
  Result := CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW),
    LOGON_WITH_PROFILE, nil, PWideChar(Application + ' ' + CmdLine),
    CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pif);
end;
Nun das Problem: Übergebe ich ein falsches Passwort, gibt die Funktion auch brav false zurück. Entsprechend geht der Code in den False-Zweig und die Messagebox erscheint. Schön, wenn da in der Messagebox nicht stünde, dass der Vorgang erfolgreich beendet wurde, was ja nun nicht stimmt.
Weiß jemand, was da falsch läuft? Also warum GetLastError 0 ist?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat