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

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

文章目录

**方法 1:使用 PowerShell**(可以查到父进程!)1. **打开 PowerShell**:2. **运行命令**:3. **查看结果**:4. **上面输出信息有点多,只输出父进程可以用以下命令**:

**方法 2:使用 `tasklist` 和 `findstr`(命令提示符)**(查不到!)1. **打开命令提示符**:2. **列出所有进程**:3. **查找特定进程**:

**方法 3:使用第三方工具(推荐)**(可以查到父子进程!可以查到进程树,推荐!)**工具:Process Explorer(Sysinternals)**1. **下载并运行 Process Explorer**:2. **查看父进程**:- 在 Process Explorer 窗口中,找到目标进程(可以通过 PID 搜索)。- 右键点击该进程,选择 **Properties**。- 在 **Image** 标签页下,查看 **Parent Process ID**。

**方法 4:使用调试工具(高级用户)**(略)**工具:TList(Windows 调试工具)**1. **安装调试工具**:2. **运行 TList**:

**方法 5:使用 C++ 代码(开发人员)**(略)1. **代码示例**:2. **编译并运行**:

**总结**

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

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

1. 打开 PowerShell:

按 Win + X,选择 Windows PowerShell 或 Windows Terminal (Admin)。

2. 运行命令:

Get-WmiObject -Query "SELECT * FROM Win32_Process WHERE ProcessId = "

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

Get-WmiObject -Query "SELECT * FROM Win32_Process WHERE ProcessId = 1234"

3. 查看结果:

输出中会包含 ParentProcessId 字段,即父进程的 PID。

4. 上面输出信息有点多,只输出父进程可以用以下命令:

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

如:

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

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

1. 打开命令提示符:

按 Win + R,输入 cmd,按回车。

2. 列出所有进程:

tasklist /v

/v 参数会显示详细信息,包括父进程的 PID。

3. 查找特定进程:

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

tasklist /v | findstr

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

工具:Process Explorer(Sysinternals)

1. 下载并运行 Process Explorer:

从 Sysinternals 官网 下载并运行 ProcessExplorer.exe。

2. 查看父进程:

- 在 Process Explorer 窗口中,找到目标进程(可以通过 PID 搜索)。

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

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

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

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

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

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

工具:TList(Windows 调试工具)

1. 安装调试工具:

安装 Windows SDK 或 Windows Driver Kit (WDK)。默认路径:C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\。

2. 运行 TList:

tlist -t

输出会显示进程树结构,包括父进程关系。

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

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

1. 代码示例:

#include

#include

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 返回值。

总结

推荐方法:使用 PowerShell 或 Process Explorer,操作简单且无需编程。高级需求:使用 NtQueryInformationProcess 或调试工具(如 TList)进行深度分析。

随便看看