Windows のカーネル モードから、特定のディスクで実行されるほぼすべてのアクションを傍受して監視できます。ファイルが何らかの目的で開かれると、イベントが発生します。
次に、それを開いたアプリケーションを追跡したいと思います。これは可能だと思いますが、方法がわかりません。
Windows Win32 API の標準ファイル管理機能を使用しています。
前もって感謝します。
/ロバート
Windows のカーネル モードから、特定のディスクで実行されるほぼすべてのアクションを傍受して監視できます。ファイルが何らかの目的で開かれると、イベントが発生します。
次に、それを開いたアプリケーションを追跡したいと思います。これは可能だと思いますが、方法がわかりません。
Windows Win32 API の標準ファイル管理機能を使用しています。
前もって感謝します。
/ロバート
Sysinternals Filemon (無料) がこれを行います。
Windows 9x ドライバーの場合、FileMon の心臓部は仮想デバイス ドライバー Filevxd.vxd にあります。これは動的にロードされ、初期化時に VxD サービス IFSMGR_InstallFileSystemApiHook を介してファイル システム フィルタをインストールし、すべてのファイル システム要求の呼び出しチェーンに自身を挿入します。Windows NT では、FileMon の心臓部は、ドライブに向けられたすべての IRP および FastIO 要求を FileMon が認識できるように、フィルター デバイス オブジェクトを作成してターゲット ファイル システム デバイス オブジェクトにアタッチするファイル システム ドライバーです。FileMon は、open、create、または close 呼び出しを検出すると、内部ファイル ハンドルとファイル パス名の間のマッピングとして機能する内部ハッシュ テーブルを更新します。ハンドル ベースの呼び出しを検出すると、ハッシュ テーブルでハンドルを検索して、表示用の完全な名前を取得します。
-アダム
Sysinternalsはそれを実行して説明するのに非常に優れた仕事をしたため、たとえば、古いバージョンのソースコードの一部がまだここで利用可能であり、コードは十分に文書化されています(imho)。それも良いスタートになるかもしれません。
Sysinternals の「handle.exe」アプリを使用します。
または、実際にこれをプログラムで実行しようとしていますか?
Win32 N.API を使用して、ファイル ハンドルから pid を取得するだけです。それは15年間のFAQです...