1

Windows が削除を実行する前に、ファイルの削除を検出する方法はありますか? FileSystemWatcher クラスを見つけましたが、削除アクションが実行された後にのみイベントが発生しますが、ユーザー/プロセスが削除を選択したら、削除アクションをトラップしたいと考えています。ファイル システム テーブルを監視できますが、より良い方法を探しています。ご協力いただきありがとうございます。

4

3 に答える 3

1

ファイルシステムフィルタードライバーが必要です。ただし、答えがわからない場合は、おそらくそれを行うべきではないことを強くお勧めします。

http://msdn.microsoft.com/en-us/library/windows/hardware/gg462968.aspx

于 2012-05-23T21:17:41.470 に答える
1

または、ICopyHookインターフェイスを試すこともできます。

http://msdn.microsoft.com/en-us/library/windows/desktop/bb776049%28v=vs.85%29.aspx

CopyCallbackメソッドでは、wFunc パラメータに FO_DELETE を使用し、削除操作を指定します。

短所: Windows シェルでのみ削除を防止します。

于 2012-05-24T08:12:32.320 に答える
1

最も簡単な方法は、フックを使用してプロセスに通知を受け取る (そして最終的に停止する) ことだと思います。.NET では実行できないためDllImport、P/Invoke には多くの構造と少数の関数が必要です。

NtSetFileInformation(文書化されていない) 関数で仕事を始めましょう。これは、ファイルを削除する必要があるときに、他の何かによって呼び出される関数です (FileDispositionInformation構造を使用して)。

問題は、その関数をどのようにフックするかです (運が良ければ、簡単ではありません)。Microsoft Detoursを使用することをお勧めします。例として、この記事を見てください。その問題は、無料ではないことです。別のソリューション (手頃な価格で .NET インターフェースを備えたもの) はDeviare ですが、無料版でさえ試したことがないので、それがどれほど優れているかはわかりません。他の誰かが良い傍受ツールを知っていれば...

于 2012-05-23T21:27:59.167 に答える