我在Windows 8.1上的python 64位上使用psutil 2.1.2。我正在使用psutil.process_iter()迭代正在运行的进程以获取特定进程的详细信息。由于某种原因,即使它显示在任务管理器和Process Explorer
中,我也无法获得该过程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
我检查了proc名称,这绝不是我正在寻找的过程。 我看不到的进程示例是svchost.exe
感谢您的帮助!
答案 0 :(得分:3)
对于某些(实际上很多)进程,proc.open_files()将导致AccessDenied异常,这可能就是您没有“看到”所有进程的原因。任务管理器和Process Explorer显示的信息比psutil更多,因为它们具有较少的权限限制(请参阅:它们可以从流程中“提取”更多信息,而不会遇到“拒绝访问”错误)。通过使用psutil,您可以看到所有进程(PID),但只有您无法“查询”所有进程。
答案 1 :(得分:1)
这个错误https://github.com/giampaolo/psutil/issues/599可能是导致问题的原因。现在修好了。