Einzelnen Beitrag anzeigen

pjanfred

Registriert seit: 8. Dez 2010
14 Beiträge
 
#1

CreateProcess - Zugriff verweigert beim anstarten von plink.exe

  Alt 10. Dez 2010, 09:08
Delphi-Version: 2007
Liebe Community,

ich probiere seit 2 Tagen plink per CreateProcess zu starten. Dazu nutze ich folgende Funktion:

Code:
function TFormMain.ExecuteFile(FileName : String; Params : String) : Integer; var
  err           : DWord;
  StartupInfo   : TStartupInfo;
  ProcessInfo   : TProcessInformation;
begin
  FillChar(ProcessInfo,SizeOf(TProcessInformation),0);
  FillChar(StartupInfo, Sizeof(StartupInfo), #0);
  StartupInfo.cb         := Sizeof(StartupInfo);
  StartupInfo.dwFlags    := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := SW_SHOWNOACTIVATE;

  if CreateProcess(
    PChar(filename),                          { pointer to executable}
    PChar(params),                 { pointer to command line string }
    nil,                           { pointer to process security attributes }
    nil,                           { pointer to thread security attributes }
    false,                         { handle inheritance flag }
    CREATE_NEW_CONSOLE or          { creation flags }
    NORMAL_PRIORITY_CLASS,
    nil,                           { pointer to new environment block }
    PChar(ExtractFilePath(ParamStr(0))), { pointer to current directory name }
    StartupInfo,                         { pointer to STARTUPINFO }
    ProcessInfo) then                    { pointer to PROCESS_INF }
  begin
    // Warten, bis der Process beendet wurde
    repeat
      err:=WaitforSingleObject(ProcessInfo.hProcess,100); // 100 MSec Warten
      // Application aktualisieren
      Application.ProcessMessages;
    until (err<>WAIT_TIMEOUT);
  end;
  if GetLastError <> 0 then
    result := GetLastError;
  if GetLastError = 0 then
    GetExitCodeProcess(ProcessInfo.hProcess, Cardinal(result));

  // Process schließen
  CloseHandle( ProcessInfo.hProcess );
  CloseHandle( ProcessInfo.hThread );
end;


Diese rufe ich wie folgt auf, als Return bekomme ich den Fehlercode der Fehlermeldung "Zugriff verweigert":
Code:
ExecuteFile('.\include\plink.exe',' -pw pass user@testrechner /verzeichnis/auf/server/datei " --param="123456789" --zeitraum="201011" --euro=1 "');
Rufe ich jedoch das Programm pscp.exe mit dieser Funktion und folgendem Befehl auf, gibt es keinen Fehler:
Code:
ExecuteFile('.\include\pscp.exe','-pw pass user@testrechner:/verzeichnis/auf/server/abzuholendedatei .\daten\')
Hat jemand eine Idee, warum diese Funktion immer diesen Fehler zurück gibt, bzw. weiß jemand woran es liegen könnte?

Gruß

Jan

Edit: Zu erwähnen wäre noch, das das Programm trotz der Meldung richtig ausgeführt wird...

Geändert von pjanfred (10. Dez 2010 um 12:44 Uhr) Grund: Update
  Mit Zitat antworten Zitat