特定のディレクトリ配下のファイル/ディレクトリの移動/コピーを検出したい

解決


こす  2004-12-10 03:29:36  No: 55603

ファイルまたはディレクトリのコピーを検出する方法を教えてください。
(VC++6.0で開発したいと考えています)

目的は、指定したディレクトリからファイルを持ち出そうとした場合、こっそり管理者に通知するプログラムを作ろうと思っています。

以下は私が実験した内容ですが、不完全な方法です。
①FindFirstChangeNotification()を使う方法
  監視対象のディレクトリ内でコピー操作を行う場合は検出可能ですが、
  監視対象→監視対象外  にコピーした場合にどうにもなりません。

②シェル拡張(CopyHookHandlers)でフック
  ディレクトリ(フォルダ)のコピー操作しか検出できません。
  コールバック関数にコピー元、コピー先の情報が設定されてくるので、
  理想的なI/Fなのですが。ファイルを監視できないので話しになりません。

使用するAPI、プログラム形態等をどなたかご教示ください。


シャノン  2004-12-10 04:21:08  No: 55604

FindFirstChangeNotifycation でダメってことは、ReadDirectoryChangesW でも似たようなもんでしょうね、たぶん…。
それらの関数の能力を超えたことをしたいとなると…フィルタドライバかなぁ。


こす  2004-12-10 20:48:55  No: 55605

シャノンさん情報ありがとうございます。

ReadDirectoryChangesW()も①同様のようです。

フィルタドライバのサンプルコード、どこかに落ちていませんか?
私が望むようなフィルタドライバって、プラットフォームの依存性は高そうですか?(XPで動くけど2000では動かないとか)


こす  2004-12-10 20:52:06  No: 55606

ちなみに、フィルタドライバってどのような単位で作るものですか?
a) 1つ
b) ファイルシステムの単位(NTFS、FAT...)
c) デバイスの種類(HDD,リムーバブルドライブ...)

どたなたかご教示ください。


シャノン  2004-12-10 21:18:47  No: 55607

ドライバの作り方は全っ然わかりません。ごめんなさい。
ただ、ウィルススキャナのように、プログラムがファイルにアクセスしようとしていることを検知して割り込み、スキャンを実行するというようなことは、ドライバを作らなければダメらしい、という話を聞いたことがあるだけです。

なお、ディスクドライバは作り方を一歩間違うだけでディスクを昇天させますので、くれぐれもご注意を…。

サンプルは提示できませんが、参考資料程度なら…

・ドライバ開発キット(DDK)
http://www.microsoft.com/whdc/devtools/ddk/default.mspx

・書籍
http://www.amazon.co.jp/exec/obidos/ASIN/4774116661/qid=1102648461/sr=1-5/ref=sr_1_10_5/249-8395646-0366714
http://www.amazon.co.jp/exec/obidos/ASIN/4881358618/qid=1102648519/sr=1-28/ref=sr_1_2_28/249-8395646-0366714
http://www.amazon.co.jp/exec/obidos/ASIN/4756133959/qid=1102648555/sr=1-43/ref=sr_1_2_43/249-8395646-0366714
http://www.amazon.co.jp/exec/obidos/ASIN/4756133967/qid=1102648461/sr=1-10/ref=sr_1_10_10/249-8395646-0366714

・掲示板
http://www.ouk.co.jp/ogawa/treecrsdx/index.cgi


こす  2004-12-10 23:10:11  No: 55608

シャノン様、情報提供ありがとうございます。

そうですよね...危険ですよね(^^;
ドライバを作ったとしても、VMWare内で動かしてみようと思います。

ありがとうございました

とりあえずクローズします


えっと  2004-12-10 23:48:47  No: 55609

VMWareでOSの不正終了は防げても論理的にファイルシステムが壊れるのは別問題では。


シャノン  2004-12-10 23:54:11  No: 55610

VMware で仮想ディスクに実際の物理ディスクのパーティションを割り当てず、仮想 HDD ファイルをマウントしているなら、ぶっ壊れるのはそのイメージファイルだけで済む…ハズ。たぶん。無保証。


えっと  2004-12-11 00:03:59  No: 55611

むかーしむかし、別ドライバの動作テストでホストまで不安定になったのは
設定がわるかったのか。ありがと。(提供環境だったので設定は分からなかった)


こす  2004-12-11 00:32:43  No: 55612

初めてDDKをインストールしてみましたが、英語版しかないのですね...

素人が立ち入る領域ではなさそうです (^^;

とりあえずフィルタドライバのサンプルソースはありました


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

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






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