ProcessStartInfo.UseShellExecute有什么大不了的?

5

ProcessStartInfo.UseShellExecute会如何影响我的运行进程?

我需要UAC的特殊权限来使用UseShellExecute吗?

它是否可以在不同的用户上运行?

它会给我新的权限吗?


这里有你的答案吗?https://dev59.com/snE95IYBdhLWcg3wSr-D 看起来MSDN应该有所有的信息。难道不是这样吗? - user1201210
它真的没有回答我的问题,它说“允许指定一个.doc文件并打开相关联的程序。”我也可以通过向我的进程发送参数来实现这一点。而且它也没有谈到权限、UAC和用户。 - Danpe
1个回答

8
Windows有两个不同的API函数可以启动进程。低级别的是CreateProcess(),它直接映射到本地API函数。还有ShellExecuteEx(),这是由shell(Explorer)实现的函数,具有更高级别的抽象性。
它们是非常不同的功能,这是在ProcessStartInfo文档中可以看到的。CreateProcess()只能启动可执行文件,但它有很好的支持来控制控制台模式程序,包括重定向I/O和控制控制台窗口的外观。ShellExecuteEx()利用了shell添加的功能,文件关联是其中一个重要的功能,因此您可以启动为特定文件名扩展名注册的可执行文件。

这两个API函数都有影响进程执行方式的选项。你会发现ProcessStartInfo类的属性与CreateProcess支持的进程创建标志和ShellExecuteEx()使用的SHELLEXECUTEINFO结构体中的字段之间存在密切关联。但是这些功能不重叠,所以你需要调整UseShellExecute。


谢谢,关于UAC有什么了解吗?用户权限? - Danpe
已知有关UAC的许多事情。除了“runas”动词之外,它与这个问题无关。 - Hans Passant
我的意思是,如果我的应用程序以SYSTEM身份运行,我能使用Shell Execute吗?如果我使用它,它会作为当前用户运行吗? - Danpe
是的。不是的。你真的需要使用“提问”按钮来提出新问题,这不是一个论坛。 - Hans Passant
7
实际上这就是我的问题。 - Danpe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接