C#/.NET 中启动进程时所使用的 UseShellExecute 设置为 true 和 false 分别代表什么意思?
2021/8/5 7:07:55
本文主要是介绍C#/.NET 中启动进程时所使用的 UseShellExecute 设置为 true 和 false 分别代表什么意思?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在 .NET 中创建进程时,可以传入 ProcessStartInfo
类的一个新实例。在此类型中,有一个 UseShellExecute
属性。
本文介绍 UseShellExecute
属性的作用,设为 true
和 false
时,分别有哪些进程启动行为上的差异。
文章目录
- 本质差异
- 效果差异
- 如何选择
本质差异
Process.Start
本质上是启动一个新的子进程,不过这个属性的不同,使得启动进程的时候会调用不同的 Windows 的函数。
UseShellExecute = true
调用的是 ShellExecuteUseShellExecute = false
调用的是 CreateProcess
当然,如果你知道这两个函数的区别,那你自然也就了解此属性设置为true
和false
的区别了。
效果差异
ShellExecute
的用途是打开程序或者文件或者其他任何能够打开的东西(如网址)。
也就是说,你可以在 Process.Start
的时候传入这些:
- 一个可执行程序(exe)
- 一个网址
- 一个 html / mp4 / jpg / docx / enbx 等各种文件
- 在
PATH
环境变量中的各种程序
不过,此方法有一些值得注意的地方:
- 不支持重定向输入和输出
- 最终启动了哪个进程可能是不确定的,你可能需要注意潜在的安全风险,而
CreateProcess
则会精确查找路径来执行,不支持各种非可执行程序的打开。但是: - 支持重定向输入和输出
如何选择
UseShellExecute
的默认值是 true
。
如果有以下需求,那么建议设置此值为false
:
-
需要明确执行一个已知的程序
-
需要重定向输入和输出
如果你有以下需求,那么建议设置此值为true
或者保持默认: -
需要打开文档、媒体、网页文件等
-
需要打开 Url
-
需要打开脚本执行
-
需要打开计算机上环境变量中路径中的程序
这篇关于C#/.NET 中启动进程时所使用的 UseShellExecute 设置为 true 和 false 分别代表什么意思?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID