VB.NETにて指定フォルダ内のファイルが更新された場合にモニターするような
アプリを作成中です。FileSystemWatcherを使用すると、
ファイル内容の更新、ファイルのリネーム、ファイルの作成、ファイルの削除については
検知するようなのですが、それを誰が行ったのか更新者の情報を取得する事が出来ません。
良い方法はないでしょうか?
詳しい方ご回答よろしくお願いします。
下記のサンプルコードを使用しています。
Dim watcher As New System.IO.FileSystemWatcher
'監視するディレクトリを指定
watcher.Path = "C:\My Documents"
'.txtファイルを監視、すべて監視するときは""にする
watcher.Filter = ".txt"
'ファイル名とディレクトリ名と最終書き込む日時の変更を監視
watcher.NotifyFilter = System.IO.NotifyFilters.FileName Or _
System.IO.NotifyFilters.DirectoryName Or _
System.IO.NotifyFilters.LastWrite
'サブディレクトリは監視しない
watcher.IncludeSubdirectories = False
'必要に応じてバッファサイズを変更
'watcher.InternalBufferSize = 4096
'同期的に監視を開始する
Dim changedResult As System.IO.WaitForChangedResult = _
watcher.WaitForChanged(System.IO.WatcherChangeTypes.All)
If changedResult.TimedOut Then
Console.WriteLine("タイムアウトしました。")
Return
End If
'変更があったときに結果を表示する
Select Case changedResult.ChangeType
Case System.IO.WatcherChangeTypes.Changed
Console.WriteLine(("ファイル 「" + _
changedResult.Name + "」が変更されました。"))
Case System.IO.WatcherChangeTypes.Created
Console.WriteLine(("ファイル 「" + _
changedResult.Name + "」が作成されました。"))
Case System.IO.WatcherChangeTypes.Deleted
Console.WriteLine(("ファイル 「" + _
changedResult.Name + "」が削除されました。"))
Case System.IO.WatcherChangeTypes.Renamed
Console.WriteLine(("ファイル 「" + _
changedResult.OldName + "」の名前が「" + _
changedResult.Name + "」に変更されました。"))
End Select