- 締切済み
Windows上のファイル操作の履歴を取得する方法
ファイル操作の履歴(参照、更新、移動、削除、コピーなど)について、 どのファイルを、誰が、どのマシンで、いつ、何をしたか、の情報をプログラムで取得したいのです。 Windowsの機能に、オブジェクト監査があり、イベントログの形である程度の情報を取得できるのですが、 以下のような情報が的確に収集できません。 ・監査を設定したフォルダから、監査を設定していないフォルダやドライブにコピー/移動 ・ファイルのリネーム等 また、イベントログの数が1回のファイル操作で数十も出力されてしまうため、 何百人分ものファイル操作の情報を、Windows監査のイベントログから収集するとしたら、 これをプログラムするのは非現実的のように思います。 しかも、ファイルタイプ(wordやtxtなど)で異なったイベントログの出力のされ方が異なっています。 どなたか、プログラムでファイル操作の履歴を収集する方法をご存知の方、 解決策を教えてください。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
実現方法ですが、まっとうな(マイクロソフトが提供しているソフトウェア開発に関する資料に基づく)方法を取る場合は、ファイルシステムドライバと呼ばれるドライバを作成する必要があります。 ファイルシステムドライバを使用してファイル操作の履歴を取得するプログラムの例として、SysInternalというサイトで公開しているFileMonというユーティリティがあります。(http://www.sysinternals.com/Utilities/Filemon.html) このユーティリティは参考URLで公開されていますが、そのページの最後のほうに、そのようなプログラムを開発するために参考になる資料へのリンクが並んでいます。かなり為になる内容です。 あまりまっとうでない方法を取るとすれば、アプリケーションがOSを呼び出す様子を監視するプログラムを作成する方法もあります。こちらの方法はドライバを作成する必要がないので、最初の方法よりも難易度はかなり下がります。 この方法に関する解説を含むページとしては、以下のようなものがあります。 http://msdn.microsoft.com/msdnmag/issues/1000/VTrace/default.aspx マイクロソフトのサイトにある解説ではありますが、あまりまっとうな方法でないことは確かです。 回答No.2の方の意見とは相違するのですが、この第2の方法を取るとしても、通常の業務アプリケーションを作成する知識はほとんど役に立ちませんので、難易度はかなり高いと言わざるを得ません。
- nick2038
- ベストアンサー率34% (55/160)
市販ソフトを導入すればいい、というのは理解されているようですね。 自前で作成するのは、あなたが市販の業務ソフト(たいていのもの)を自分で作れるレベルのプログラマーであれば、可能でしょう。多少はコードが書ける…レベルであれば、とうてい歯が立たないでしょう。 実現方法と言っていいのかわかりませんが…基本的には端末側にエージェントを仕込む事になりますね。
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
一般論としては、お望みのようなことはできません。(できない理由をお知りになりたい場合は、回答へのコメント等でお尋ねください。) しかし、ファイル操作のうち特定のもの(削除、ファイル名変更、ある種の移動、ある種のコピー、ある種の参照)の履歴を収集することは可能です。 もっとも、そのようなプログラムを自前で作成するのはまず無理ですので、既存の管理ソフトを導入することになります。 Googleで ファイル アクセス 履歴 管理 "Windows 2000" を検索すると、それらしいソフトウェアがいくつか出てくるようですので、それらの導入を検討されてみてはいかがでしょうか。
お礼
早速のご回答、有難うございます。 もう少し自分で調べてみたいと思います。
補足
自前で作成するのは難しい事と思いますが、 市販されているソフトウェアがありますので、 その実現方法を知りたいです。 (自分で調べたところ、実現方法が見つからず、お手上げ状態となったため、今回投稿しました)