【发布时间】:2010-11-04 01:53:27
【问题描述】:
在 Windows 中,有没有办法在 C++ 中启动一个进程,然后在完成后将它吐出的内容读取到标准输出中?如有必要,必须使用提升的权限(在 Vista 或更高版本上)运行该进程。
我目前正在使用 ShellExecuteEx() 来启动进程并运行 while 循环,直到 GetExitCodeProcess() 不再通过 lpExitCode 参数返回 STILL_ACTIVE(在每次迭代期间调用 WaitForSingleObject() 会等待 100 毫秒)。
【问题讨论】:
-
你可以在启动进程时将标准输出重定向到命名管道吗? (不是 C++ 开发人员,因此发表评论)
-
问题在于,要运行提升的进程,您必须使用
ShellExecuteEx()和runas动词。而ShellExecuteEx()不支持输出重定向 AFAICT。