什么可执行文件启动了我的可执

时间:2010-04-07 09:27:24

标签: windows process

有没有可靠的方法来了解哪些可执行文件调用了我的可执行文件?

我有一个.NET可执行文件,但我想知道是谁启动了我的应用程序。

3 个答案:

答案 0 :(得分:1)

您的问题http://www.codeproject.com/KB/threads/ParentPID.aspx

有答案

简而言之,您创建了使用lpfCreateToolhelp32Snapshot()运行的所有流程的快照,然后对其进行迭代,以GetCurrentProcessId()找到您的流程(由lpfProcess32First()/lpfProcess32Next()标识)。找到自己的流程后,您获得的结构将为您提供父流程的流程ID,即运行您的应用的流程ID。

获得父PID后,很容易获得exe文件的文件名以及EnumProcessModules()GetModuleFileNameEx()的其他属性。

但你可以使用链接中的代码。

答案 1 :(得分:1)

您想以编程方式找到它吗?然后你会发现这些related questions有用:

如果您只是想查看父进程,可以使用Sysinternals中的Process Explorer

答案 2 :(得分:1)

为什么你需要知道这个? Windows不像unix那样维护严格的父进程层次结构 - 它在创建进程时记录父进程的PID,但是当此进程消失时它不会更新(因为进程不跟踪其子进程,所以你无法更新它)。这意味着父进程PID可能指向不再存在的进程。更糟糕的是,理论上可以重用进程ID,这意味着父进程ID可以指向完全不同的进程。