2

みなさん、こんにちは。質問が重複していたらすみません(私の英語はとても下手です)。ユーザーがファイルを開いたときに通知を受ける方法はありますか? 「Opened」イベントを除いて、FileSystemWatcher クラスのようなものはありますか? このファイルを変更または名前変更せずに開いているファイルを検出したいだけです。たとえば、ファイルの名前変更を検出し、開いていることも検出したい

private void hookEvents(String path, String password)
    {
        FileSystemWatcher fsw = new FileSystemWatcher();
        fsw.Path = Path.GetDirectoryName(path);
        fsw.Filter = Path.GetFileName(path);
        fsw.Renamed += new RenamedEventHandler(onRenamed);
        fsw.EnableRaisingEvents = true;
    }

PSフィルターとドライバーについて聞いたことがありますが、c#が私の要求に簡単に対応できることを願っています。

4

2 に答える 2

2

System.IO.FileSystemWatcher は、ファイルの変更を監視するために構築されています。「ファイルを開く」ことはファイル自体を変更しないため、確実には機能しません。

これを行う可能な方法があります

オプション1

WMI クエリ (OS が Windows ベースの場合) または書き込み用にファイルを開く (ファイルが使用中の場合は例外が発生する) ことによって、ファイルが使用中かどうかを検出できます。

オプション 2

ファイルのハンドルを取得して、どのプロセスが所有権を持っているかを確認できます。もしそうなら、そのファイルは他の誰かによって開かれています。この投稿を確認してくださいC# を使用して、どのプロセスがファイルをロックしたかをどのように把握しますか?

于 2014-03-18T14:19:47.790 に答える