跟踪哪个程序启动了某个进程?

use*_*246 7 windows-7 process

有一个特定的进程困扰着我,它在通过命令提示符或任务管理器杀死它后大约一分钟内持续启动。

目前我正在使用让批处理文件每 15 秒循环一次的方法,如果它在那里就将其杀死。但是,我更希望能够阻止它的启动。

是否有适用于 Windows 7 的任何方法来跟踪进程的启动方式?

bar*_*lop 9

有一个叫做 PPID(父进程 ID)的东西,但在 Windows 中找到它相对“棘手”,因为它不是任务管理器中显示的列,我什至在进程资源管理器中也没有看到它的列。

执行此操作的两种方法

Method 1 - WMIC
Method 2 - Process Monitor
Run Code Online (Sandbox Code Playgroud)

这两种方法都很快捷

方法 1 - WMIC

我将使用如何从这里使用 WMIC 找到 PPID 的答案 /sf/ask/524070221/

这使得剩下的事情变得相当简单

C:\blah>wmic process get processid,parentprocessid
ParentProcessId  ProcessId
0                0
0                4
4                320
392              572
320              656
648              664
392              688
688              740
688              756
688              764
...              ...
Run Code Online (Sandbox Code Playgroud)

其余的相当明显。

所以让我们假设你想找到谁启动了 calc.exe

你从任务管理器看到的 calc.exe 是 PID 7384

C:\blah>wmic process get processid,parentprocessid | find "7384"
10896            7384

PPID             PID


C:\crp>
Run Code Online (Sandbox Code Playgroud)

WMIC 显示了 PID 和 PPID 之间的关联。然后在任务管理器中查找 10896,(10896 是为 calc.exe 的 PID 7384 列出的 PPID),在任务管理器中我看到 PID 为 10896 的进程是 cmd.exe,这是我用来启动 calc 的进程。 exe 确实 cmd.exe 是产生 calc.exe 的父进程

方法 2 - 进程监视器

您可以在 sysinternals 进程监视器中进行。

单击菜单栏中的 filter..filter,然后添加一个过滤进程名称或路径或 PID 的过滤器,例如进程名称 calc.exe 或路径过滤器,然后输入 c:\windows\system32\calc.exe

我碰巧使用了进程名称

在此处输入图片说明

如果尚未捕获,请执行 OK.. 和 file..capture。

双击正确的进程,在这种情况下加载图像 calc.exe 并出现一个属性对话框,单击正确的选项卡“进程”,您会看到 PID 和 PPID(父进程 ID)。

在此处输入图片说明

当然,当您像现在一样了解 PPID 时,您可以在任务管理器中查找它以了解是哪个进程产生了它