c++ - 将 2 个 int 值从子进程传递给父进程的方法

标签 c++ c windows winapi mfc

让我解释一下我的困境。我的一个在用户模式下以提升的权限运行的进程需要提供打开用户文件的能力,并且如果可能的话,从该进程获取退出代码。我不想直接从提升的进程中打开该文件,而是以较低的权限运行它。为此,我执行以下操作:

  1. 使用 CreateProcessAsUser 启动我的第二个“shim”进程。 ,具有较低的权限。该“shim”进程在登录的交互式用户帐户下运行。

  2. “shim”进程依次首先调用 CreateProcess对于用户文件(希望它是一个进程。)如果失败,它会尝试调用 ShellExecuteEx可能会也可能不会返回进程句柄。因此,如果我获得子进程的进程句柄,我会调用 WaitForSingleObject并等待它发出信号,之后我调用 GetExitCodeProcess从进程中获取退出代码。

  3. 之后“shim”进程立即关闭。

我的困境是我需要通过 2 int值返回到我的主可执行文件 - 一个是执行结果:例如,ran file OK ,或failed to run file ,或file was not a process等等。第二个int ,这是进程本身的退出代码。

问题是如何以最简单的方式做到这一点?

编辑:只是一个想法。你怎么认为?如果我使用系统注册表传回其中一个整数会怎样?我可以使用HKEY_CURRENT_USER\Software\Brand\AppName键,并将该值命名为通过调用 GetProcessTimes 获得的子进程 ID 和子进程创建时间的串联。 API。然后当父级收到子级的响应时删除该键。

最佳答案

boost 进程间 header 库将为您解决这个问题,同时具有平台无关的优势。

http://www.boost.org/doc/libs/1_58_0/doc/html/interprocess/quick_guide.html#interprocess.quick_guide.qg_memory_pool

关于c++ - 将 2 个 int 值从子进程传递给父进程的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224767/

相关文章:

windows - 如何以编程方式检查驱动器是否受 Windows 系统还原功能的约束?

C++类成员和内存位置

c++ - 通过扫描关键字读取文本文件

c++ - 是否允许位域的聚合初始化?

c - 从线程中断 main 中的 while 循环。 (C语言编程)

具有非复合语句用例的 C switch 语句?

c++ - 是否有任何与可读性无关的原因不能每次都专门使用固定宽度的整数?

c# - OraOLEDB.Oracle 提供程序未在本地计算机上注册

c++ - std::to_string - 多个重载函数的实例与参数列表匹配

linux - 使用批处理文件从 Windows 计算机在远程 Linux 计算机上运行自定义命令