我有点问题。我将尝试获取计算机上所有进程的所有模块(dll文件)。我试图在命令行中执行以下命令:
tasklist /m
但这是64位系统的问题。如果在64位计算机上运行32位程序,它不会列出所有模块,只列出
^{pr2}$然后我尝试使用Python脚本,使用pywin32(win32api)来实现这一点。在
代码如下:
import win32security,win32file,win32api,ntsecuritycon,win32con,win32process
processes = win32process.EnumProcesses()
for pid in processes:
dll_list = []
try:
if pid:
print('pid:', pid)
ph = win32api.OpenProcess(win32con.MAXIMUM_ALLOWED, False, pid)
dll = win32process.EnumProcessModules(ph)
for dll_name in dll:
dll_name_norm = win32process.GetModuleFileNameEx(ph, dll_name)
dll_list.append(dll_name_norm)
print("dll_list: ", dll_list)
print("--------------")
except:
print("Error")
print("--------------")
但结果是一样的。=( 请帮我这个,我怎么能看到所有的dll文件,加载由每个进程。在
另外,它只能是标准的Windows工具,如命令行、tasklist(而不是ListDlls、processexplorer或相同的东西)或Python中的脚本。在
非常感谢你!在
^{} 只显示与Python具有相同位的进程。相反,使用} 。在
dwFilterFlag=LIST_MODULES_ALL
调用^{您当前的代码需要} ,不在标准库中。以下是仅使用标准库的解决方案:
win32api
模块,该模块仅recently added ^{相关问题 更多 >
编程相关推荐