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

Python中使用win32processEnumProcessModules()函数枚举进程模块示例

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

使用 win32process.EnumProcessModules() 函数可以枚举指定进程的所有模块(DLL 文件)。以下是一个使用示例:

import win32api
import win32process

# 获取所有进程的 ID
process_ids = win32process.EnumProcesses()

# 遍历所有进程
for process_id in process_ids:
    try:
        # 打开进程以获取进程句柄
        process_handle = win32api.OpenProcess(win32api.PROCESS_ALL_ACCESS, False, process_id)

        # 获取进程模块句柄列表
        module_handles = win32process.EnumProcessModules(process_handle)

        # 遍历模块句柄列表
        for module_handle in module_handles:
            # 获取模块文件路径
            module_file = win32process.GetModuleFileNameEx(process_handle, module_handle)
            print(f"进程 ID: {process_id}, 模块路径: {module_file}")

        # 关闭进程句柄
        win32api.CloseHandle(process_handle)
    except Exception as e:
        print(f"获取进程模块时出错: {e}")

在上面的示例中,我们首先使用 win32process.EnumProcesses() 获取所有进程的 ID 列表。然后,我们使用这些进程 ID 遍历每个进程,并使用 win32api.OpenProcess() 打开进程以获取进程句柄。

接下来,我们使用 win32process.EnumProcessModules() 获取该进程的所有模块句柄列表。然后,我们使用 win32process.GetModuleFileNameEx() 获取每个模块的文件路径,并打印出来。

最后,我们使用 win32api.CloseHandle() 关闭进程句柄。

注意:以上代码需要安装 pywin32 模块(pip install pywin32)才能运行。

这个示例可以帮助你了解如何使用 win32process.EnumProcessModules() 函数枚举指定进程的所有模块,并获取模块的文件路径。你可以根据自己的需求对代码进行修改和扩展。