使用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()函数获取每个模块的路径,并进行打印。
运行代码后,会打印 个进程的模块信息,包括模块的句柄和路径。根据需要,可以对获取的模块信息进行进一步的操作和处理。
