psutil.process_iter() 不返回所有正在运行的进程

Ido*_*o A 5 python psutil

我在 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

谢谢您的帮助!

Gia*_*olà 4

对于某些(实际上是许多)进程, proc.open_files() 将导致 AccessDenied 异常,因此这可能就是您无法“查看”所有进程的原因。任务管理器和进程资源管理器比 psutil 显示更多信息,因为它们的权限限制较少(请参阅:它们可以从进程中“提取”更多信息,而不会遇到“访问被拒绝”错误)。通过使用 psutil,您可以查看所有进程(PID),只是您无法“查询”所有进程。