ProcessStartInfo.UseShellExecute 将如何影响我正在运行的进程?
我是否需要 UAC 的特殊权限才能使用 UseShellExecute?
它会在不同的用户上运行吗?
它会给我新的权限吗?
Windows 有两个不同的 api 函数来启动进程。底层是 CreateProcess(),它直接映射到原生 api 函数。还有ShellExecuteEx(),一个由shell(Explorer)实现的函数。它具有更高级别的抽象。
它们是非常不同的功能,这就是您在 ProcessStartInfo 的文档中看到的内容。CreateProcess() 只能启动可执行文件,但它对控制控制台模式程序有很好的支持,包括重定向 I/O 和控制控制台窗口外观的能力。ShellExecuteEx() 利用了 shell 添加的功能,文件关联是最大的功能,因此您可以启动为特定文件扩展名注册的可执行文件。
两个 api 函数都有影响进程执行方式的选项。您将看到 ProcessStartInfo 类的属性和CreateProcess 支持的Process Creation Flags以及ShellExecuteEx() 使用的SHELLEXECUTEINFO 结构中的字段之间的密切相关性。但是这些功能不会重叠,因此您需要修改 UseShellExecute。