If I use UseShellExecute with Process.Start and the EXE is invalid (test it with a 0-byte file named test.exe for example), I find that it says in the exception "%1 is not a valid Win32 application."
Clearly it doesn't fill out the %1 with the filename.
Minor, but it really threw me for a loop as to what it meant.
On .NET it will fill out the filename.
Have a good day