本項では、「handle.exe -a」の出力結果からボリュームを使用しているプロセスを調査する方法について説明します。
「openfiles.exe /query /v」の出力結果を使った調査も、同様の手順で可能です。
「handle.exe -a」の出力フォーマット
handle v3.42の場合、「handle -a」は以下のフォーマットで情報を出力します(handle.exeがhandle v3.42 でない場合は、出力フォーマットが以下と異なる場合があります)。
プロセスごとに区切られたセクション単位にハンドル情報が出力されます。
各セクションは点線によって区切られています。点線の直後には、プロセス名とプロセスIDが表示されます。プロセス名、プロセスIDの行の下に、そのプロセスが使用しているハンドル情報が出力されます。
例
「handle.exe -a」の出力例
Handle v3.42 Copyright (C) 1997-2008 Mark Russinovich Sysinternals - www.sysinternals.com ------------------------------------------------------------------------------ System pid: 4 NT AUTHORITY\SYSTEM 4: Process System(4) 8: Thread System(4): 12 : : 1FF8: File (---) \Device\Tcp ------------------------------------------------------------------------------ smss.exe pid: 1424 NT AUTHORITY\SYSTEM 4: KeyedEvent \KernelObjects\CritSecOutOfMemoryEvent 8: Event : : 70: Port ------------------------------------------------------------------------------ csrss.exe pid: 1840 NT AUTHORITY\SYSTEM 4: Key HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 8: KeyedEvent \KernelObjects\CritSecOutOfMemoryEvent : : A28: Thread lsass.exe(840): 4084 ------------------------------------------------------------------------------ winlogon.exe pid: 1976 NT AUTHORITY\SYSTEM 4: Key HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 8: KeyedEvent \KernelObjects\CritSecOutOfMemoryEvent : : 86C: Key HKCR ------------------------------------------------------------------------------ services.exe pid: 812 NT AUTHORITY\SYSTEM 4: KeyedEvent \KernelObjects\CritSecOutOfMemoryEvent 8: Event : : |
「handle.exe -a」の出力結果からの調査方法
以下の手順でプロセスを特定してください。
「handle.exe -a」の保存先ファイルを、notepadなどのテキストエディタで開きます。
エラー発生ボリュームのドライブ文字またはマウントポイントを含む行をすべて検索します。
手順2で検出された各行について、検出された行からカーソルを上方に移動(スクロール)させて、原因となるプロセス名とプロセスIDを特定します。
例
「handle.exe -a」の出力結果を、文字列"X:"で検索
------------------------------------------------------------------------------ svchost.exe pid: 1884 NT AUTHORITY\SYSTEM ←"X:"を使用しているプロセス 4: KeyedEvent \KernelObjects\CritSecOutOfMemoryEvent 8: Event : : EA0: File (RWD) X:\$Extend\$ObjId ←文字列"X:"を含む行 : : |
さらに、ボリュームを使用しているプロセスがサービスである場合、「tasklist /svc」の出力結果を参照することで、そのプロセスを使用しているサービスを調査できます。
例
「tasklist.exe /svc」の出力結果を、プロセス名:svchost.exe、プロセスID:1884で検索
イメージ名 PID サービス ========================= ======== ============================================ System Idle Process 0 N/A System 4 N/A smss.exe 1424 N/A csrss.exe 1840 N/A winlogon.exe 1976 N/A services.exe 812 Eventlog, PlugPlay lsass.exe 840 HTTPFilter, kdc, Netlogon, NtLmSsp, PolicyAgent, ProtectedStorage, SamSs svchost.exe 1132 DcomLaunch svchost.exe 1692 RpcSs svchost.exe 1736 Dhcp, Dnscache svchost.exe 1808 Alerter, LmHosts, W32Time svchost.exe 1884 AeLookupSvc, BITS, Browser, CryptSvc, dmserver, EventSystem, helpsvc, lanmanserver, lanmanworkstation, Netman, Nla, NtmsSvc, Schedule, seclogon, SENS, ShellHWDetection, TrkWks, winmgmt, wuauserv, WZCSVC ccSetMgr.exe 2036 ccSetMgr : : |
この例のように、1つのプロセスが複数のサービスから使用されていることがあります。その場合は、サービスを1つずつ停止させて、原因となるサービスを特定してください(この例では、サービス名:TrkWksのサービス、すなわち、Distributed Link Tracking Clientサービスが"X:\$Extend\$ObjId"を使用しています)。