Windows进程号、查看父进程查找、查看子进程、父子进程、进程树、查看某个进程号PID父进程(Parent Process ID, PPID)ProcessExplore、procexp、进程监控

参考文章:Windows解除占用(解除文件占用、解除目录占用)查看文件进程(查看父进程、查看子进程、查看父子进程)占用文件占用、占用目录占用


在 Windows 系统中,查看某个进程号(PID)的父进程(Parent Process ID, PPID)有以下几种方法:


方法 1:使用 PowerShell(可以查到父进程!)

1. 打开 PowerShell
  • Win + X,选择 Windows PowerShellWindows Terminal (Admin)
2. 运行命令
Get-WmiObject -Query "SELECT * FROM Win32_Process WHERE ProcessId = <PID>"

<PID> 替换为你要查询的进程号。例如:

Get-WmiObject -Query "SELECT * FROM Win32_Process WHERE ProcessId = 1234"
3. 查看结果
  • 输出中会包含 ParentProcessId 字段,即父进程的 PID。
    在这里插入图片描述
4. 上面输出信息有点多,只输出父进程可以用以下命令
Get-WmiObject -Query "SELECT ParentProcessId FROM Win32_Process WHERE ProcessId = <PID>"

如:

Get-WmiObject -Query "SELECT ParentProcessId FROM Win32_Process WHERE ProcessId = 18276"

在这里插入图片描述


方法 2:使用 tasklistfindstr(命令提示符)(查不到!)

1. 打开命令提示符
  • Win + R,输入 cmd,按回车。
2. 列出所有进程
tasklist /v

在这里插入图片描述

  • /v 参数会显示详细信息,包括父进程的 PID。
3. 查找特定进程

如果只想查看某个 PID 的详细信息,可以结合 findstr 过滤:

tasklist /v | findstr <PID>

在这里插入图片描述


方法 3:使用第三方工具(推荐)(可以查到父子进程!可以查到进程树,推荐!)

工具:Process Explorer(Sysinternals)
1. 下载并运行 Process Explorer
2. 查看父进程
- 在 Process Explorer 窗口中,找到目标进程(可以通过 PID 搜索)。

右上角搜索貌似只能通过名称,我是使用Find handle or DLL...搜索的:

在这里插入图片描述

通过进程id搜索,然后点击搜索结果,能直接定位到进程树所在位置,父进程、子进程一目了然:

在这里插入图片描述

- 右键点击该进程,选择 Properties

也可以点击属性查看详细信息:

在这里插入图片描述

- 在 Image 标签页下,查看 Parent Process ID

在这里插入图片描述


方法 4:使用调试工具(高级用户)(略)

工具:TList(Windows 调试工具)
1. 安装调试工具
2. 运行 TList
tlist -t
  • 输出会显示进程树结构,包括父进程关系。

方法 5:使用 C++ 代码(开发人员)(略)

如果需要编程实现,可以使用 NtQueryInformationProcess 函数(参考知识库 [3]):

1. 代码示例
#include <windows.h>
#include <iostream>

NTSTATUS NtQueryInformationProcess(HANDLE ProcessHandle, PROCESSINFOCLASS ProcessInformationClass, PVOID ProcessInformation, ULONG ProcessInformationLength, PULONG ReturnLength);

int main() {
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());
    if (hProcess == NULL) {
        std::cerr << "OpenProcess failed." << std::endl;
        return 1;
    }

    PROCESS_BASIC_INFORMATION pbi;
    ULONG returnLength;
    NTSTATUS status = NtQueryInformationProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), &returnLength);
    if (status == 0) {
        std::cout << "Parent Process ID: " << pbi.ParentProcessId << std::endl;
    } else {
        std::cerr << "NtQueryInformationProcess failed." << std::endl;
    }

    CloseHandle(hProcess);
    return 0;
}
2. 编译并运行
  • 需要链接 Windows SDK 并处理 NTSTATUS 返回值。

总结

  • 推荐方法:使用 PowerShellProcess Explorer,操作简单且无需编程。
  • 高级需求:使用 NtQueryInformationProcess 或调试工具(如 TList)进行深度分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dontla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值