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?