誰がどのファイルを開いているか調べる方法

誰がどのファイルを開いているかを調べる方法を2つ紹介します。

openfiles

Windows XPには openfilesというツールがあって誰がどのファイルを開いているか列挙することができます。


まず cmd.exe で

openfiles /local on

として、ファイルのトレースができるようにします。(再起動が必要です)。


その後

openfiles

と打ち込むと

ローカルで開いているファイル:
---------------------

ID    プロセス名           開いているファイル (パス\実行可能ファイル)
===== ==================== ==================================================
C:\..6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9
64    wscntfy.exe          C:\..6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9
12    explorer.exe         C:\Documents and Settings\higepon
60    explorer.exe         C:\..6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9

などと開いているファイルの列挙ができます。


ちなみに気が済んだら以下のようにoffにしておきましょう。
ファイルのトレースは少なからず負荷になり、パフォーマンスが低下するらしいです。

openfiles /local off

Filemon

openfilesはCUIでなんとなくそっけない感じなのですがFilemonはGUIで状況を確認できます。

  1. http://www.sysinternals.com/Utilities/Filemon.htmlにアクセス。
  2. 一番下までスクロールして、Download Filemon (x86 - 200 KB) - you plan on using Filemon on 32-bit versions of NT/2K/XP/Server 2003でダウンロードします。
  3. 解凍して実行します。

開いているファイルが列挙されます。こういう状態を見るとOSの中の人は大変だろうなぁとおもいますね。


プロセス毎にリアルタイムでディスクI/Oの量が分かるツールがあるといいなぁ。
ハードディスクがガリガリいっているときに原因をつかみたいので。

追記 ProcessExplorer

id:mjtさんからの紹介。
http://www.sysinternals.com/Utilities/ProcessExplorer.html


タスクマネージャがさらに高機能になった感じ。
View - Select Columns - Process PerformanceタブでI/Oのデータを表示するようにしましょう。
ついでに
Options - Replace Task Managerを選ぶとタスクマネージャの代わりのこれが起動するようになります。
プロセスがツリー上に見えて良い感じですね。
不正なプロセスがあったら一発で分かりそう。