Hat sich unter Windows 7 das Verhalten von spawnvp geändert?

epifx

Cadet 3rd Year
Registriert
Mai 2014
Beiträge
36
[Gelöst] Hat sich unter Windows 7 das Verhalten von spawnvp geändert?

Hallo Leute,

Ich kämpfe jetzt schon Stunden mit einem selbstgeschriebenen Programm, das ich einfach nicht von XP nach W7 umgesetzt bekomme. Und zwar geht es um einen darin enthaltenen spawnvp-Aufruf, mit dem ich über "cmd /c" ein *.bat File anstoße.

Also spawnvp aufgerufen mit
- P_WAIT
- pszArgs[0] (cmd.exe)
- pszArgs (cmd.exe und options, die options lauten /c, der Name des bat-files und ein zugehöriger Übergabeparameter

Man sieht ganz kurz ein cmd-window aufpoppen, welches sofort wieder zugeht, aber das übergebene bat-file wird nicht ausgeführt. Das bat-file selbst geht einwandfrei, wenn ich es direkt in einer cmd-shell starte.

Die Methode, die jetzt nicht mehr geht, verwende ich schon seit Urzeiten, bereits seit Windows NT.
Hat jemand eine Idee, warum zwar das cmd.exe aufgerufen wird, aber der übergebene bat-Aufruf nicht?

Noch eine Info zum verwendeten Compiler. Ich arbeite mit dem Borland C++ Builder 5. Ja, ich weiß, bereits uralt, aber für mich vollkommen ausreichend.

Und noch eine Info, die vielleicht weiterhelfen könnte, der Rückgabewert von spawnvp lautet "1".

Gruß
epifx

P.S.: Solltet ihr noch Rückfragen haben, kann ich diese gerne ab Montag früh beantworten, morge unterdrücke ich den Programmierfrust in den Bergen ;)
 
Zuletzt bearbeitet:
Soweit ich zu wissen meine geht das schon seit Vista nicht mehr - Stichwort UAC
Ein Tipp: öffne mit deinem cmd nicht eine anblauf.bat sondern direkt ein ablauf.cmd
Das sollte gehen und ist inhaltlich identisch
 
Leerzeichen im Namen / Pfad der Batch-Datei? Dann in Anführungsstriche setzen.
Edit: Falls Du keinen Pfad angibts mach mal testweise "cmd /k dir" um zu sehen wo du bist. :)
 
lynxx schrieb:
Leerzeichen im Namen / Pfad der Batch-Datei? Dann in Anführungsstriche setzen.
Der für das bat-File als Parameter übergebene Pfadname steht in Anführungszeichen, bei dem Problem mit den Leerzeichen im Namen bin ich schon vor Jahren hereingefallen und ich hab's dann korrigiert. ;)
Edit: Falls Du keinen Pfad angibts mach mal testweise "cmd /k dir" um zu sehen wo du bist. :)
Ich mache im aufrufenden Programm direkt vor spawnvp ein chdir auf das Verzeichnis, in dem sich das bat-File befindet. Wie gesagt, unter XP läuft alles einwandfrei. Im Prinzip auch meine ganze Anwendung, bis auf die Funktionen, wo ich über spawnvp cmd.exe /c ein bat-File aufrufen will.

pumuck| schrieb:
Soweit ich zu wissen meine geht das schon seit Vista nicht mehr - Stichwort UAC
Ein Tipp: öffne mit deinem cmd nicht eine anblauf.bat sondern direkt ein ablauf.cmd
Das sollte gehen und ist inhaltlich identisch
Ist das so zu verstehen, dass ich mein *.bat File einfach nur nach *.cmd umbenennen soll? Das kann ich heute Abend mal probieren, hier habe ich die Borland-Entwicklungsumgebung nicht vorliegen.

epifx
 
Ja das meine ich - ein Versuch ist es Wert, ob das reicht kann ich Dir aber nicht versprechen :)
 
So, jetzt habe ich es mit *.cmd ausprobiert, kein Erfolg.

Ich hab's aber anderweitig geschafft. Ich konnte heute nochmals einen Ideenaustausch mit Kollegen durchführen.
Da wurde vermutet, dass es irgendwie an Zugriffsrechten liegen könnte.

Ich habe daraufhin einmal das bat-File so umgebaut, dass ich den darin enthaltenen chdir nicht mehr brauche. Und siehe da, es geht jetzt. Fragt mich aber bitte nicht warum.

Fakt ist jedenfalls, dass es zuvor unter XP problemlos ging und auch bei W7 das bat-File in einer cmd-Shell gestartet auch einwandfrei lief.

Auf jeden Fall vielen Dank für eure Hilfe!

epifx
 
Zurück
Oben