ファイルにロックをかけるには


仙人  2016-11-16 02:08:46  No: 48399

プログラミング初心者です、宜しくお願い致します。
以下2点ご教示下さい。

・ロギングアプリを作っています。データ・ロギングはランダムに実行しま    す。
・ロギングファイルは、アプリ実行PC-HDDに保存します。
・ロギングファイルはTStringListを使って生成、保存しています。
・外部から(ネットワーク経由又は自PC内他アプリ)のロギングファイルへの
  アクセスを随時ブロックしたり、ブロック解除したりしたいのですが。
・TFileStreamを使えば、排他制御が出来ることは判ったのですが、「既存」
  のファイルに、「随時」鍵をかけたり外したりするのには向かないように思  います。
・又、このロギングファイルが他のアプリで使われているかどうかをチェック
  する方法(実際アクセスしてしてみて例外が発生するか否かで知る方法以外)
  は有るのでしょうか。

以上、宜しくお願い致します。


仙人  2016-11-16 02:47:53  No: 48400

肝心なことを忘れていました。
・開発はDelphi2007  +  Windows7(64)
・実行環境  Window7(32)です。

宜しくお願い致します。


deldel  2016-11-17 18:50:51  No: 48401

アクセス権を色々なんとかすればいいような気もしますが知識がないので・・・

発想を変えて、保存時に暗号化するというのはどうでしょうか?


take  2016-11-17 21:32:33  No: 48402

以前、この掲示板で他のプロセスがファイルを開いていないか
確認する方法を教わったときのソースです。

昔の環境では動くのですが最近の環境ではどうも正常に機能していないようです。

var
  lh_Handle: THandle;
begin
  lh_Handle := CreateFileW(
    PWideChar(sFile),  //ファイル名
    GENERIC_READ,      //アクセス権
    0,                 //共有
    nil,               //セキュリティ属性
    OPEN_EXISTING,     //ファイルは存在する必要あり
    0,                 //属性
    0                  //テンプレート
  );

  Result := (lh_Handle <> INVALID_HANDLE_VALUE);
  CloseHandle(lh_Handle);


deldel  2016-11-18 00:00:29  No: 48403

ここなどは参考にならないでしょうか?

http://10jitetsujin.blog.fc2.com/blog-entry-27.html
http://jehupc.exblog.jp/21616243


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加