Diese Backslashverdopplung ist IMHO unnötig. Doppelte Backslashes brauchst du nur bei Stringliteralen im Quellcode und ein paar sehr seltenen Sonderfällen. Bei ShellExecute brauchst du sie sicher nicht.
Wenn das Programm weiterläuft, war das eine sogenannte First chance exception. Es trat also eine Ausnahme auf, es gibt aber einen Exception Handler dafür (z.B. einen try-Block). Nur wenn der die Ausnahme nicht behandelt, würde der Debugger das Programm anhalten.
Das muss nicht unbedingt ein Fehler sein. Wenn du dem auf den Grund gehen willst, kannst du unter Debug -> Exceptions (IIRC) einstellen, dass VC bei dieser Art Ausnahme (0xE06D7363) immer anhält. Dann kannst du über den Callstack sehen, wo der Aufruf herkam.
Du könntest auch deinen Code mit Traces spicken, um grob abschätzen zu können, wo die Exception herkommt. Aber die erste Methode ist die bessere.