WINAPI:获取进程信息的几种API

GetModuleFileNameExW

GetModuleFileNameExW

作用:通过进程句柄获取模块文件路径

原理:进程模块列表本身就包含exe,即exe也是模块之一。

限制: 1. 需要hProcess句柄具有PROCESS_QUERY_INFORMATION 和 PROCESS_VM_READ(或者PROCESS_QUERY_LIMITED_INFORMATION)访问权限 2. 可能存在获取失败的可能(比如内核进程获取模块名就会失败)

属于PSAPI系列 (Process State)

GetProcessImageFileName

GetProcessImageFileName

作用:检索指定进程的可执行文件的名称。

原理:暂不清楚

属于PSAPI系列 (Process State)

QueryFullProcessImageName

QueryFullProcessImageName

作用:检索指定进程的可执行映像的全名

原理:暂不清楚

属于WinBase系列

根据官方的说法 推荐:

Windows 2000 = GetModuleFileNameEx()

Windows XP/Server2003 = GetProcessImageFileName()

Windows Vista/7/8/10/Server2008/Server2012 = QueryFullProcessImageName()

PssCaptureSnapshot

PssCaptureSnapshot

作用:捕获目标进程的快照从而获取对应的进程信息

原理:捕获目标进程的快照

限制:1.win 8.1以上才支持

属于PssAPI系列(Process Snap Shot)

使用如下:

#include <Windows.h>
#include <ProcessSnapshot.h>
#include <stdio.h>

void main()
{
    HPSS hPssHandle = NULL;
    if (PssCaptureSnapshot(GetCurrentProcess(), PSS_CAPTURE_HANDLE_BASIC_INFORMATION, 0, &hPssHandle) == ERROR_SUCCESS)
    {
        PSS_PROCESS_INFORMATION pssProcess = {};
        PssQuerySnapshot(hPssHandle, PSS_QUERY_PROCESS_INFORMATION, &pssProcess, sizeof(pssProcess));
        // ...
        printf("path:%S\n", pssProcess.ImageFileName);
        // ...
        PssFreeSnapshot(GetCurrentProcess(), hPssHandle);
    }
    ExitProcess(0);
}

EnumProcesses

EnumProcesses

作用:检索系统中每个进程对象的进程标识符。

原理:获取当前系统的进程列表。

注意:短进程可能也在其中,但是无法获取进程句柄

属于PSAPI系列 (Process State)

使用用例参考:

枚举所有进程

CreateToolhelp32Snapshot

CreateToolhelp32Snapshot

作用:获取指定进程以及这些进程使用的堆、模块和线程的快照。

原理:对当前系统的进程列表进行快照保存

注意:可以获取到短进程的部分信息。

属于Toolhelp系列(工具帮助函数)

使用用例参考:

拍摄快照,查看进程

相同与区别

WINAPIGetModuleFileNameExWGetProcessImageFileNamePssCaptureSnapshotQueryFullProcessImageNameEnumProcessesCreateToolhelp32Snapshot
最低支持平台Windows XP/2003Windows XP/2003Windows Vista/2008Windows 8.1/2012R2Windows XP/2003Windows XP/2003
使用思路123456

点赞

本文标签: WindowsWIN_API

版权声明:本博客所有文章除特别声明外,本文皆为《shiver blog》原创,转载请保留文章出处。

本文链接:WINAPI:获取进程信息的几种API - https://www.binary-monster.top/article/79

1

发表评论

电子邮件地址不会被公开。 必填项已用*标注