本章では、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"を使用しています)。