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() 函数枚举指定进程的所有模块,并获取模块的文件路径。你可以根据自己的需求对代码进行修改和扩展。
