Rob*_*obH 8 c++ windows stdout
在Windows中,有没有办法在C++中启动进程,然后在完成后读取它在stdout中吐出的内容?必要时,必须使用提升的权限(在Vista或更高版本上)运行该进程.
我目前正在使用ShellExecuteEx()来启动进程并运行while循环,直到GetExitCodeProcess()不再通过lpExitCode参数返回STILL_ACTIVE(在每次迭代期间使用WaitForSingleObject()调用执行100毫秒的等待).
没有简单的方法可以做到这一点。
ShellExecuteEx()使用动词调用runas将 RPC 消息发送到AppInfo NT 服务,然后从提升的会话运行应用程序。没有 API 可以轻松地将提升进程的输入/输出连接到您的应用程序。
Thomas Hruska 在他的代码项目文章中介绍了他CreateProcessElevated()解决此问题的函数的实现。
不是直接运行提升的程序,而是依赖于另一个可执行文件,该可执行文件接收stdin、stdout、stderrCreateProcessElevated()命名管道的名称,并在调用之前在提升的会话中重新创建它们的句柄。CreateProcess()
| 归档时间: |
|
| 查看次数: |
6524 次 |
| 最近记录: |