【发布时间】:2010-10-30 17:04:56
【问题描述】:
我使用 CreateProcess 来执行 Notepad.exe,但记事本的父进程是我自己的 AP。当我关闭自己的AP时,记事本的进程父级变成了资源管理器。我将如何将资源管理器作为这个新打开的进程的父进程?
【问题讨论】:
我使用 CreateProcess 来执行 Notepad.exe,但记事本的父进程是我自己的 AP。当我关闭自己的AP时,记事本的进程父级变成了资源管理器。我将如何将资源管理器作为这个新打开的进程的父进程?
【问题讨论】:
这个问题毫无意义。 Windows 没有像其他操作系统那样在进程之间建立真正的父子关系。顺便说一句,一些关于启动进程的信息被保留了,但是,在 CreateProcess 启动代码之外,从父进程复制句柄和环境,进程之间没有进一步的特殊关系。它们完全独立地运行。
一些任务管理器确实显示了一种层级关系,暗示父子关系持续存在,但最终这只是通过扫描进程创建信息列表以查看是否可以找到暗示其他进程是它们的创建者 - 因此是父进程的匹配项。
【讨论】:
尝试使用 CreateRemoteThread() 在 explorer.exe 的地址空间内创建一个新线程(如果它正在运行),然后让该线程启动记事本。
【讨论】:
没有立即将 explorer.exe 设置为父进程的内置方法。但是,据我所知,您可以使用 p/invoke 进行一些调用来完成此操作。
这里是an article 关于使用 p/invoke 以另一个用户身份启动的实现。这让您了解 p/invoke 过程。然后这里是an article,它谈到了启动一个非子进程。您可以结合两者的信息来实现您想要的目标。
【讨论】: