5

Windows 8.1のpython 64ビットで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

proc 名を確認しましたが、探しているプロセスではありません。表示されないプロセスの例は、svchost.exe です。

助けてくれてありがとう!

4

2 に答える 2

4

一部の (実際には多くの) プロセスでは、proc.open_files() によって AccessDenied 例外が発生するため、おそらくすべてのプロセスが「表示」されないのはそのためです。タスク マネージャーとプロセス エクスプローラーは、特権の制限が少ないため、psutil よりも多くの情報を表示します (参照: 「アクセス拒否」エラーに遭遇することなく、プロセスからより多くの情報を「抽出」できます)。psutil を使用すると、すべてのプロセス (PID) を表示できますが、それらすべてを「クエリ」することはできません。

于 2014-10-29T10:19:39.603 に答える