6

プログラムは、ネットワークドライブを共有する複数のマシンで実行されています。使用できます

... = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read);

ファイルの書き込みをロックします。他のすべてのインスタンスは、それを読み取って、ファイルが書き込み可能ではないという警告を表示することしかできません。

誰が(つまり、どのマシンが)ファイルをロックしたかを調べて、警告に沿って表示するにはどうすればよいですか?

4

2 に答える 2

3

私がこれまでに見た唯一の方法は、ファイルを開いてマーカー ファイル (.lock) などを残すプログラムです。この .lock ファイルには、明らかに必要なもの (ユーザー名、マシンなど) を含めることができ、個別に読み取ることができます。

これは、他の PC でそれを読み取っているソフトウェアを制御できることを前提としています。

于 2012-08-15T14:37:01.857 に答える
1

これは、プロセス リストを調べて、各プロセスによってロックされているファイルを確認する方法の例として、C# ソース コードを含む投稿です。

C# を使用して、どのプロセスがファイルをロックしたかをどのように把握しますか

次のステップは、各マシンのサービス内でこの機能を使用して、プロセスが特定のファイル名のクエリを送信し、そのマシンのプロセスがファイルをロックしているかどうかに関する応答を受信できるようにすることです。

データには、プロセス名、ユーザー ID、およびプロセス リストから取得できるその他の情報が含まれる場合があります。

このアプローチは手間がかかりますが、アプリケーションがファイルをロックして特別なことをする必要なく、情報にアクセスする方法を提供します。

一方、関心のあるファイルが自分の管理下にあり、ファイルへのアクセスを特定できる場合、これはおそらくやり過ぎです。

于 2012-08-15T14:29:51.163 に答える