Winapi WinExec和ShellExecute之间有哪些区别?

Winapi WinExec和ShellExecute之间有哪些区别?,winapi,Winapi,我需要执行另一个应用程序,我想知道是否有理由我应该使用WinExec而不是ShellExecute,反之亦然 两种方法的区别是什么?是否有一个是首选的?WinExec长期被弃用,仅出于向后兼容的原因而保留。它用于启动可执行文件。不要使用它,因为它不受欢迎。如文件所述: 此功能仅用于与16位Windows兼容。应用程序应使用CreateProcess函数 ShellExecute未被弃用,但也不应使用,因为它无法正确报告错误 使用ShellExecuteEx执行shell谓词 如果希望创建进程,并

我需要执行另一个应用程序,我想知道是否有理由我应该使用
WinExec
而不是
ShellExecute
,反之亦然


两种方法的区别是什么?是否有一个是首选的?

WinExec
长期被弃用,仅出于向后兼容的原因而保留。它用于启动可执行文件。不要使用它,因为它不受欢迎。如文件所述:

此功能仅用于与16位Windows兼容。应用程序应使用CreateProcess函数

ShellExecute
未被弃用,但也不应使用,因为它无法正确报告错误

使用
ShellExecuteEx
执行shell谓词


如果希望创建进程,并且知道可执行文件名,请使用
CreateProcess
。除非您需要执行提升,在这种情况下,您需要使用
runas
动词执行
ShellExecuteEx

要执行应用程序,请使用
CreateProcess
,而不是
ShellExecute
。忘记WinExec,因为它已经被弃用很长时间了。如果你不知道可执行文件的名称,你就不能使用WinExec。这两个函数不是等价的。@Sertac我们根本不打算调用
WinExec
。我已经解释了何时使用SEE和何时使用CP。没关系。但是这个问题值得一提,这就是它的问题所在。@Sertac我已经扩展了答案accordingly@DavidHeffernan:谢谢你的澄清,现在一切都清楚了。