在 .NET 中创建进程时,可以传入 ProcessStartInfo
类的一个新实例。在此类型中,有一个 UseShellExecute
属性。
本文介绍 UseShellExecute
属性的作用,设为 true
和 false
时,分别有哪些进程启动行为上的差异。
Process.Start
本质上是启动一个新的子进程,不过这个属性的不同,使得启动进程的时候会调用不同的 Windows 的函数。
UseShellExecute = true
UseShellExecute = false
true
和 false
的区别了。ShellExecute
的用途是打开程序或者文件或者其他任何能够打开的东西(如网址)。
也就是说,你可以在 Process.Start
的时候传入这些:
PATH
环境变量中的各种程序不过,此方法有一些值得注意的地方:
CreateProcess
则会精确查找路径来执行,不支持各种非可执行程序的打开。但是:UseShellExecute
的默认值是 true
。
如果有以下需求,那么建议设置此值为false
:
需要明确执行一个已知的程序
需要重定向输入和输出
如果你有以下需求,那么建议设置此值为 true
或者保持默认:
需要打开文档、媒体、网页文件等
需要打开 Url
需要打开脚本执行
需要打开计算机上环境变量中路径中的程序