欢迎访问宙启技术站
智能推送

使用Python的win32processEnumProcessModules()函数获取进程模块列表

发布时间:2023-12-16 16:46:30

使用Python的win32process.EnumProcessModules()函数可以获取指定进程的模块列表,每个模块都有一个句柄和一个模块路径。下面是一个使用例子,其中获取了当前计算机上所有进程的模块列表,并打印出 个进程的模块信息。

首先,需要安装pywin32库,使用pip install pywin32命令进行安装。

import psutil
import win32process
import win32api


def get_process_modules():
    # 获取当前计算机上所有进程的PID
    pids = psutil.pids()

    # 获取      个进程的信息
    pid = pids[0]
    p = psutil.Process(pid)

    # 获取进程句柄
    handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid)

    # 获取进程模块列表
    modules = win32process.EnumProcessModules(handle)

    # 遍历模块列表并打印信息
    for module in modules:
        # 获取模块路径
        module_path = win32process.GetModuleFileNameEx(handle, module)

        print("模块句柄:%d, 模块路径:%s" % (module, module_path))


if __name__ == '__main__':
    get_process_modules()

注意,在以上代码中使用了psutil库来获取进程的PID,因此需要先使用pip命令安装该库。

在代码中,首先获取当前计算机上所有进程的PID列表,然后通过psutil.Process(pid)获取进程对象。接着,使用win32api.OpenProcess()函数根据进程的PID获取进程句柄。然后,使用win32process.EnumProcessModules()函数获取进程模块列表。最后,使用win32process.GetModuleFileNameEx()函数获取每个模块的路径,并进行打印。

运行代码后,会打印 个进程的模块信息,包括模块的句柄和路径。根据需要,可以对获取的模块信息进行进一步的操作和处理。