我在 Windows 8.1 上的 64 位 python 上使用 psutil 2.1.2。我正在使用 psutil.process_iter() 遍历正在运行的进程以获取特定进程的详细信息。出于某种原因,即使它显示在任务管理器和进程资源管理器中,我也没有得到进程
for proc in psutil.process_iter():
try:
if proc.name() == 'svchost.exe': # patch for debugging
pass #script never gets here
opened_files = proc.open_files()
opened_files = [opened_file[0] for opened_file in opened_files]
if file_path in opened_files:
processes.append(proc)
except (psutil.AccessDenied, psutil.NoSuchProcess):
pass
Run Code Online (Sandbox Code Playgroud)
我检查了 proc 名称,它从来都不是我正在寻找的过程。我没有看到的进程示例是 svchost.exe
谢谢您的帮助!
对于某些(实际上是许多)进程, proc.open_files() 将导致 AccessDenied 异常,因此这可能就是您无法“查看”所有进程的原因。任务管理器和进程资源管理器比 psutil 显示更多信息,因为它们的权限限制较少(请参阅:它们可以从进程中“提取”更多信息,而不会遇到“访问被拒绝”错误)。通过使用 psutil,您可以查看所有进程(PID),只是您无法“查询”所有进程。