Kann es sein, dass deine eigene Anwendung in diesem Verzeichnis noch unterwegs ist (durch den Aufruf von ShellExecute)?
GetCurrentDir sollte dir das sagen können; ggf. aufrufen vor und nach dem ShellExecute, um zu ermitteln, ob selbiges für das eigene Programm irgendwas am CurrentDir ändert (auch wenn das seltsam wäre).
Grüße
Dalai