Windows有两个不同的api函数来启动进程.低级的是CreateProcess(),它直接映射到本机api函数.还有ShellExecuteEx(),这是一个由shell(Explorer)实现的函数.它具有更高的抽象级别.
它们是非常不同的功能,您可以在ProcessStartInfo的文档中看到这些功能.的CreateProcess()只能启动可执行文件,但它有很好的支持,以控制控制台程序,包括I/O重定向和控制控制台窗口的外观的能力.的ShellExecuteEx()接受由外壳添加的功能优势,文件关联是最大的一个,这样你就可以开始其注册为特定文件扩展名可执行文件.
两个api函数都有选项来影响进程的执行方式.您将看到ProcessStartInfo类的属性与CreateProcess支持的Process Creation Flags以及ShellExecuteEx()使用的SHELLEXECUTEINFO结构中的字段之间存在密切关联.但这些功能不重叠,这就是为什么你需要修改UseShellExecute.