[WinAPI] cmd.exe finden, um es zu starten
Verfasst: 19.08.2015, 00:12
Ich bin gerade ein Bisschen ratlos. Und zwar starte ich von einer GUI-Anwendung aus ein CMD-Skript und leite seine Ausgaben in meine GUI um. Das funktioniert auch so weit ganz gut, nur muss ich was fest verdrahten und fühle mich dabei unwohl:
Ich starte das Skript in einem separaten Prozess via CreateProcess(). Die Dokumentation dazu:
Ich *könnte* den Weg gehen, den die Dokumentation nicht erwähnt, aber viele andere benutzen: Programmname leer lassen und cmd.exe in die Parameterliste packen. Dann laufe ich aber Gefahr, mit der Autokorrektur zu kollidieren, wobei Randfälle kaputtgehen.
Ich *könnte* auch GetSystemDirectory() nutzen, um den wahren Pfad von System32 auf dem Zielsystem zu lokalisieren. Aber verdammt, da muss es doch was Einfacheres geben!
Ideen? Mache ich was falsch, dass es bei mir nicht wie in der Dokumentation beschrieben funktioniert?
Ich starte das Skript in einem separaten Prozess via CreateProcess(). Die Dokumentation dazu:
Und das ist falsch. Wenn ich als Anwendungsname nur cmd.exe übergebe, schlägt die Funktion mit ERROR_FILE_NOT_FOUND fehl! Ich muss C:\Windows\System32\cmd.exe übergeben. Und das stinkt mir.To run a batch file, you must start the command interpreter; set lpApplicationName to cmd.exe and set lpCommandLine to the following arguments: /c plus the name of the batch file.
Ich *könnte* den Weg gehen, den die Dokumentation nicht erwähnt, aber viele andere benutzen: Programmname leer lassen und cmd.exe in die Parameterliste packen. Dann laufe ich aber Gefahr, mit der Autokorrektur zu kollidieren, wobei Randfälle kaputtgehen.
Ich *könnte* auch GetSystemDirectory() nutzen, um den wahren Pfad von System32 auf dem Zielsystem zu lokalisieren. Aber verdammt, da muss es doch was Einfacheres geben!
Ideen? Mache ich was falsch, dass es bei mir nicht wie in der Dokumentation beschrieben funktioniert?