I solved this problem by creating a "parent" process who's only job was to launch the "child" process and wait for it to complete. If you return a value with the "ExitProcess" Win32 SDK call from the child to the parent, you can notify the parent that the child has terminated and that it wants to be restarted, which the parent process can readily then do. The parent can use the GetExitCodeProcess Win32 SDK call to retrieve the child's exit code. The Win32 SDK distributed with Measurement Studio describes the ExitProcess function.