If you use CreateProcessWithLogonW (maybe others like ShellExec) to launch another executable, the first string in the array is not the program name but the first argument specified. If no arguments are specified, the program name as the first an only string. Environment.CommandLine does the same thing.