![]() |
Delphi-Version: 2007
CreateProcess - Zugriff verweigert beim anstarten von plink.exe
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:
Rufe ich jedoch das Programm pscp.exe mit dieser Funktion und folgendem Befehl auf, gibt es keinen Fehler:
ExecuteFile('.\include\plink.exe',' -pw pass user@testrechner /verzeichnis/auf/server/datei " --param="123456789" --zeitraum="201011" --euro=1 "');
Code:
Hat jemand eine Idee, warum diese Funktion immer diesen Fehler zurück gibt, bzw. weiß jemand woran es liegen könnte?
ExecuteFile('.\include\pscp.exe','-pw pass user@testrechner:/verzeichnis/auf/server/abzuholendedatei .\daten\')
Gruß Jan Edit: Zu erwähnen wäre noch, das das Programm trotz der Meldung richtig ausgeführt wird... |
AW: CreateProcess - Zugriff verweigert beim anstarten von plink.exe
Bin ich blind oder hast Du beim Aufruf Deiner Funktion den 2ten Parameter vergessen? :gruebel:
|
AW: CreateProcess - Zugriff verweigert beim anstarten von plink.exe
Hups, hab ich beim zensieren wohl das Komma vergessen...
Ich korrigiere es mal Edit: Ist geändert, Danke |
AW: CreateProcess - Zugriff verweigert beim anstarten von plink.exe
Kann es sein, dass Result nicht in jedem Fall definiert ist (entsprechende Compiler-Warnung)?
Delphi-Quellcode:
->
if GetLastError <> 0 then
result := GetLastError; if GetLastError = 0 then GetExitCodeProcess(ProcessInfo.hProcess, Cardinal(result));
Delphi-Quellcode:
result := GetLastError;
if result = 0 then GetExitCodeProcess(ProcessInfo.hProcess, Cardinal(result)); |
AW: CreateProcess - Zugriff verweigert beim anstarten von plink.exe
Und was meint dein Virenscanner dazu? - Ich könnte mir vorstellen, dass der den Zugriff auf die Datei sperrt.
Bernhard |
AW: CreateProcess - Zugriff verweigert beim anstarten von plink.exe
Was passiert denn bei CreateFile auf die plink.exe? Die meisten Virenscanner implementieren einen FS-Filtertreiber, der beim Öffnen von Dateien bereits zuschlägt, aber es wäre nicht auszuschließen, daß einige auch SSDT-Hooks einsetzen.
Ansonsten müßtest du mal ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz