让我解释一下我的困境。我的一个在用户模式下以提升的权限运行的进程需要提供打开用户文件的能力,并且如果可能的话,从该进程获取退出代码。我不想直接从提升的进程中打开该文件,而是以较低的权限运行它。为此,我执行以下操作:
使用 CreateProcessAsUser 启动我的第二个“shim”进程。 ,具有较低的权限。该“shim”进程在登录的交互式用户帐户下运行。
“shim”进程依次首先调用 CreateProcess对于用户文件(希望它是一个进程。)如果失败,它会尝试调用 ShellExecuteEx可能会也可能不会返回进程句柄。因此,如果我获得子进程的进程句柄,我会调用 WaitForSingleObject并等待它发出信号,之后我调用 GetExitCodeProcess从进程中获取退出代码。
之后“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 库将为您解决这个问题,同时具有平台无关的优势。
关于c++ - 将 2 个 int 值从子进程传递给父进程的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224767/