こんにちわ。質問があります。
ファイルへのアクセスを記録し、簡単なアクセスログを作ろうと思っています。
具体的には、いつどのファイルを開いたかを記録しTXTファイルなどに記録していくことを考えています。
「あるファイルを開いた」ことを取得する関数はありますか?
よろしくお願いいたします。
前提条件や環境の提示がないので・・・
まず一般アプリでは無理です。
尚、そういう関数も多分ありません。
技術的に可能か?
といえば可能です。
1. API HOOKを使ってみる。
2. フィルタードライバーを作ってファイルのオープンを
監視する。
でしょうか・・・
フィルタドライバー関連書籍として
WindowsXPフィルタドライバプログラミング
入門と実践 技術評論社 ISBN4-7741-1666-1 \3250
(残念ながら絶版みたい・・・)
何にせよ、すごく高速なレスポンスが要求されますので
C言語系でないと無理かと。
ただし、ファイルの変更を監視する機能はありますが、
高速に読み書き読み書きされれば、取りこぼしはありま
す。尚、監視するドライブ・フォルダを指定しないとい
けないので、どこでも・・・と言うわけにはいきません。
http://dobon.net/vb/dotnet/file/filesystemwatcher.html
以上。参考まで
ファイルの監査機能では不足ですか?
http://itpro.nikkeibp.co.jp/article/COLUMN/20061127/254976/
Vistaだと,例えば
==== ここから ====
オブジェクトに対するハンドルが要求されました。
サブジェクト:
セキュリティ ID: (machine)\(user)
アカウント名: (user)
アカウント ドメイン: (machine)
ログオン ID: (id)
オブジェクト:
オブジェクト サーバー: Security
オブジェクトの種類: File
オブジェクト名: (file)
ハンドル ID: 0x2e0
プロセス情報:
プロセス ID: 0x1c04
プロセス名: C:\Program Files\Windows Media Player\wmplayer.exe
アクセス要求情報:
トランザクション ID: {00000000-0000-0000-0000-000000000000}
アクセス: READ_CONTROL
SYNCHRONIZE
ReadData (または ListDirectory)
ReadEA
ReadAttributes
アクセス マスク: 0x120089
アクセスの確認に使用した特権: -
制限された SID 数: 0
==== ここまで ====
のようなものが,セキュリティログに書き出されます。
あとは,この情報を収集してやればログはできあがると思いますが。
お返事ありがとうございます。
非常に難しい技術だということ、ファイルの監査機能を使ったやり方もあるということ、わかりました。
PCはXPを使っています。
ファイルの監査機能ではファイルにアクセスした日時を記録することは可能ですか?
VBと逸脱して恐縮ですが、何とぞよろしくお願いいたします。