用 C++ 读取另一个进程的标准输出

2023-11-22

在 Windows 中,有没有办法在 C++ 中启动进程,然后在完成后将其吐出到 stdout 中?如有必要,必须使用提升的权限(在 Vista 或更高版本上)运行该进程。

我目前正在使用 ShellExecuteEx() 启动进程并运行 while 循环,直到 GetExitCodeProcess() 不再通过 lpExitCode 参数返回 STILL_ACTIVE(使用 WaitForSingleObject() 调用在每次迭代期间执行 100 毫秒等待)。


没有简单的方法可以做到这一点。

Calling ShellExecuteEx()runasverb 发送 RPC 消息到AppInfo NT 服务然后从提升的会话中运行该应用程序。没有 API 可以轻松地将提升进程的输入/输出连接到您的应用程序。

托马斯·赫鲁斯卡在他的代码项目文章介绍了他的实施CreateProcessElevated()解决这个问题的函数。

而不是直接运行提升的程序CreateProcessElevated()依赖于另一个接收名称的可执行文件标准输入、标准输出、标准错误命名管道并在调用之前在提升的会话中重新创建其句柄CreateProcess().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 C++ 读取另一个进程的标准输出 的相关文章

随机推荐

  • 如何在node.js沙箱中安全地运行用户提交的脚本?

    在 Node js 中安全运行 可能是恶意的 用户提交的脚本有哪些选项 IE 在阻止代码访问敏感数据和 API 的环境中 vm runInNewContext userScript 是一个诱人的起点 但似乎有已知的问题 there The
  • IE10 User-Agent导致ASP.Net不发回Set-Cookie(IE10不设置cookie)

    Summary ASP Net 不发回Set Cookie使用 IE 10 时的标头 这意味着 例如 在使用表单身份验证时 您无法使用 IE10 登录 ASP Net 站点 Detail 我们目前正在针对 IE 10 预览版 2 测试我们的
  • 在卡萨布兰卡设置基本 HTTP 身份验证

    我正在尝试修改卡萨布兰卡教程包括基本的 HTTP 身份验证以访问繁荣API auto fileStream std make shared
  • 在 ASP.NET 中重新生成 SessionID

    请建议如何在 ASP NET 中重新生成新的会话 ID 如果我们使用 SessionManager 生成新的 id 那么它不会更改 Session SessionID 的值 请建议如何实现这一目标 基本上我想在放弃 Session 或使用
  • 如何通过单击电子邮件超链接打开 Outlook

    我有一个表 其中一列是电子邮件地址 我需要添加到此电子邮件地址的超链接 以便单击它会打开 Outlook 其中的电子邮件地址为TO field 有人可以帮忙吗 Try this a href title title Email a 这里 A
  • 在 iPhone 中以编程方式获取用户的 AppleId

    是否可以获取当前登录设备的用户的Apple ID 实际上 我实现了应用内购买 并且在用户购买应用程序时获得了设备 ID 和 Apple ID 不 这是不可能的 您可以使用 UIDevice currentDevice identifierF
  • Python:创建动态函数

    我有一个问题 我想创建动态函数 该函数将根据从数据库检索的值进行一些计算 我很清楚我的内部计算 但问题是如何创建动态类 我的结构是这样的 class xyz def Project start 2011 01 03 def Phase1 e
  • Java/Tomcat 被黑客攻击 [已关闭]

    Closed 这个问题是无关 目前不接受答案 最近我的 tomcat 服务器上出现了一些明显是黑客企图的文件 我支持使用 struts 和 ibatis 以及各种其他框架的旧应用程序 创建了三个文件 一个是实际 webapp 目录下的 sy
  • 升级到 JUnit4 并通过一起运行旧版 JUnit 3 测试和测试套件来保留它们

    我很惊讶到目前为止还没有找到答案 如果我错过了一些基本的东西 我会非常高兴知道这一点 有一个大型遗留代码库已升级到 Java 6 从 1 4 代码中存在大量 JUnit 3 测试 并被组织成测试套件 可以使用 Eclipse 中的 JUni
  • 如何首先定义嵌套的识别关系实体框架代码

    我目前首先在一个简单的测试应用程序中使用 EF5 代码来测试各种功能 我定义了两个实体之间的 识别关系 表示一对多链接 这里我定义了一个 PhotoCollection 它有很多子 Photo 实体 public class PhotoCo
  • 在 side div 中随机位置生成数字而不重叠

    我想在 div 内的随机位置显示随机数而不重叠 我能够在随机位置显示随机数 但它超出了盒子范围并相互重叠 这是我的代码 JSFiddle var width container innerWidth var height container
  • 在 Raphael Javascript 库中渲染 SVG 多边形

    据我所知 目前 Raphael Javascript 库中无法显示 SVG 多边形 我正在构建一个需要读取 SVG 并在 Raphael 中显示它们的应用程序 但是 许多 SVG 使用多边形 例如 我正在读取具有以下格式的多边形的 SVG
  • PyQt5 到 PySide2,加载不同类中的 UI 文件

    我有一个在 python3 6 下运行的 python 应用程序 并使用 PyQt5 加载 Ui 窗口 这些窗口是使用 Qt Designer 5 9 4 创建的 下面的代码显示了 PyQt5 的工作示例 现在我想拥有完全相同的功能 但使用
  • 返回具有嵌套级别和值的嵌套列表

    我想使用可视化一些深层嵌套的数据网络D3 我不知道如何在发送之前将数据转换为正确的格式radialNetwork 这是一些示例数据 level lt c 1 2 3 4 4 3 4 4 1 2 3 value lt letters 1 11
  • 是否可以将流量路由到特定 Pod?

    假设我正在 GKE 中运行我的应用程序 这是一个多租户应用程序 我创建了多个托管我的应用程序的 Pod 现在我想要 客户 1 1000 使用 Pod1 使用 Pod2 的客户 1001 2000 ETC 如果我有一个指向我的集群的 gclo
  • 使用 GLUT 在 3D OpenGL 世界中显示固定位置 2D 文本

    我有一个OpenGL项目使用GLUT 不是 freeglut 其中我想在视口上的固定位置显示 2D 文本 我的其余对象位于 3D 世界坐标中 这个答案一个相关的老问题说 GLUT 附带的位图字体是简单的 2D 字体 不适合在 3D 环境中显
  • 这是 .NET 的 Regex.Split 中的错误吗?

    我有两个正则表达式 用于Regex Split lt G and lt G 2 分割字符串时 A B C D E F G 第一个结果是 A B C D E F G 第二个结果是 A B A C D C E F E G 这里发生了什么 我以为
  • 让 html5 地理定位在用户每次重新加载页面时请求许可

    为什么我们需要它 我们的网站上有一些页面 允许用户输入一些数据并搜索其所在地区的其他客户 当用户打开该页面时 必须显示弹出消息 http foo bar com想要使用您当前的位置 之后 用户可以放弃它并手动填写位置字段或接受并自动重定向到
  • 从视频 URL 中提取缩略图

    我必须从视频 来自网址 中提取缩略图 我使用以下代码 NSString stringUrl video stringurl NSURL url NSURL URLWithString stringUrl AVURLAsset asset A
  • 用 C++ 读取另一个进程的标准输出

    在 Windows 中 有没有办法在 C 中启动进程 然后在完成后将其吐出到 stdout 中 如有必要 必须使用提升的权限 在 Vista 或更高版本上 运行该进程 我目前正在使用 ShellExecuteEx 启动进程并运行 while