Win 7/UAC让我烦透了。
在我的C++应用程序中,我需要运行一个在Windows 7上需要提权的可执行文件。我想启动它并等待它完成后再继续进行。有什么最简单的方法可以实现这一点吗?
通常,我会通过CreateProcess()
来完成此类操作,但对于需要提权的可执行文件,它会失败。
我尝试通过CreateProcess
运行cmd.exe /c ...
,虽然可以运行,但会弹出一个难看的cmd终端窗口。
我了解到ShellExecute()
将允许提权,但在使用ShellExecute()
时似乎很难等待可执行文件完成。像system()
这样简单的东西能不能使用呢?
如果还有其他想法,非常感谢!
CreateProcess()
将会因为ERROR_ELEVATION_REQUIRED
而失败。 - Remy LebeaulpVerb
成员中使用runas
,但如果调用进程尚未提升,则需要使用ShellExecuteEx
而不是CreateProcess
。您可以从其他评论中推断出这一点,但尚未明确说明。 - BlueMonkMN