1

Delphi では、次のようにファイルをロックできることがわかりました。

aHandle     := CreateFile(PChar(aFileName),GENERIC_READ, 0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); // get the handle of the file
aFileSize   := GetFileSize(aHandle,nil); //get the file size for use in the  lockfile function
Win32Check(LockFile(aHandle,0,0,aFileSize,0)); //lock the file

しかし、それまでアプリを実行せずに、次の再起動までファイルをロックしたままにする方法はありますか?

4

1 に答える 1

3

うわー、私はこれのユースケースに興味があります!

ファイルをロックしたままにしたい場合は、アプリケーションを実行し続ける必要があるかもしれません。

ただし、解決策を提示するよりも、解決しようとしている実際の問題に戻った方がよい場合があります解決策が特定の形をとらなければならないと考える人は、一般的に、すべてのオプションを考慮しないことで不利になります。

他のユーザーがファイルを変更できないようにすることが目的の場合は、アクセス許可を使用することをお勧めします。これは、プログラムが常にファイルをロックしているかどうかに関係なく機能するためです。

ただし、この方法で行う必要があり、ファイルのロックを解除するためにアプリケーションを強制終了したくない場合は、RobinHood/FriarTuck メソッドを使用して、より「安全」にすることができます。

1 つのプログラム (Robin) でファイルをロックし、2 つ目のプログラム (Tuck) も開始します。Tuck が終了した場合は、Robin にすぐに再起動してもらいます。

同様に、Tuck は Robin のステータスを追跡し、終了したらすぐに再起動します。

これは決して完全に安全というわけではありませんが、Robin と Tuck がお互いを保護するため、ファイルを変更できるウィンドウが大幅に減少します。

それは悪でもあるので、この機能を解き放つ前に、この機能が必要であることを確認する必要があるかもしれません.

于 2013-02-27T03:12:15.967 に答える