ProcessStartInfo.UseShellExecute有什么大不了的?

时间:2012-09-26 13:55:22

标签: c# .net windows shell process

ProcessStartInfo.UseShellExecute将如何影响我的运行过程?

我是否需要UAC对UseShellExecute的特殊权限?

它会在不同的用户上运行吗?

它会给我新的权限吗?

1 个答案:

答案 0 :(得分:8)

Windows有两个不同的api函数来启动进程。低级的是CreateProcess(),它直接映射到本机api函数。还有ShellExecuteEx(),这是一个由shell(Explorer)实现的函数。它具有更高的抽象级别。

它们是非常不同的功能,您可以在ProcessStartInfo的文档中看到这些功能。 CreateProcess()只能启动可执行文件,但它有很好的支持来控制控制台模式程序,包括重定向I / O和控制控制台窗口外观的能力。 ShellExecuteEx()利用shell添加的功能,文件关联是最重要的,因此您可以启动为特定文件扩展名注册的可执行文件。

两个api函数都有影响进程执行方式的选项。您将看到ProcessStartInfo类的属性与CreateProcess支持的Process Creation Flags以及ShellExecuteEx()使用的SHELLEXECUTEINFO structure中的字段之间存在密切关联。但这些功能并不重叠,因此您需要修改UseShellExecute。