In der CMD, da arbeitest du aber nicht zufällig mit relativen Pfaden?
Wenn ja, dann selbst Schuld.
* einmal sowas macht man nicht
* und dann gibst du beim ShellExecute auch kein Arbeitsverzeichnis an
Und mit einem
ShellExecuteAndWait könntest du auch den ExitCode der CMD auslasen.
Also nicht nur den Start, sondern auch das Ende.