CreateProcess和ShellExecute差异

Sam*_*uel 10 c++ windows winapi createprocess shell-exec

两者之间的主要区别是什么?我愿意从我的(C++)应用程序中只运行另一个EXE.继承环境,安全功能等时是否有任何差异?

Ole*_*leg 15

CreateProcess和之间的主要区别在于ShellExecute:CreateProcess更低的层次和ShellExec更高的用户杠杆,在浏览器中看到用户.

例如,使用CreateProcess一个可以使用长度更多的命令行MAX_PATH.它有32,768个字符的限制.您还可以使用CreateProcess在登录屏幕上的其他Windows桌面上启动程序(如果您有足够的权限).

另一个例子.例如,您可以使用ShellExecute启动控制面板或打开计算机上存在的任何程序来编辑JPG.因此,您可以使用ShellExecuteWindows资源管理器中的相应操作.


Jer*_*fin 7

主要区别在于灵活性.ShellExecute更容易使用,但没有很大的灵活性.CreateProcess是一种痛苦,但让你做任何事情.

例如,CreateProcess您可以指定用于子项中标准输入/输出/错误流的句柄(管道或文件).ShellExecute不会让你想要这样做.

值得注意的是,虽然ShellExecute 可以直接用于启动可执行文件,但其主要目的是"执行"文档文件 - 例如,告诉它"执行""whatever.html",并启动默认值Web浏览器并将指定的HTML文件加载到其中.您也可以使用CreateProcess它,但要做到这一点,您(通常)首先调用FindExecutable查找与相关数据文件关联的程序,然后执行将数据文件作为参数传递.