共有ネットワークフォルダ(NAS)を監視するWindowsサービスを構築しました。私は、フォルダが作成、名前変更、削除されたときにログをイベントビューアに書き込むことができました。私の最終目標は「誰が作成したのか、名前を変更したのか、削除したか」で、ユーザー名またはLanIDをイベントビューアのログに含めることです。C#filesystem watcher - イベントをトリガしたユーザーを見つけよう
私は、次のステップにアプローチする方法についてのリードを探しています。以下は私の現在のコードです。所有者が(それゆえクリエーター?)ファイルのある人、これは完全にあなたの問題を解決しますが、あなたが得ることができるかもしれ場合
public partial class NasFolderMonitor : ServiceBase
{
public const string MyServiceName = "NASFolderWatcher";
private System.Diagnostics.EventLog eventLog;
public NasFolderMonitor()
{
InitializeComponent();
eventLog = new System.Diagnostics.EventLog();
eventLog.Source = "NasMonitorLog";
eventLog.Log = "NasMonitorLog";
}
public void NASFolderWatcher()
{
if (!EventLog.SourceExists("NasMonitorLog"))
{
EventLog.CreateEventSource("NASFolderWatcher", "NasMonitorLog");
}
// Create a new FileSystemWatcher with the path
FileSystemWatcher NasWatcher = new FileSystemWatcher("Share Path here");
NasWatcher.IncludeSubdirectories = true;
NasWatcher.Changed += new FileSystemEventHandler(OnChanged);
NasWatcher.Created += new FileSystemEventHandler(OnChanged);
NasWatcher.Deleted += new FileSystemEventHandler(OnChanged);
NasWatcher.Renamed += new RenamedEventHandler(OnChanged);
// Begin watching
NasWatcher.EnableRaisingEvents = true;
}
protected override void OnStart(string[] args)
{
NASFolderWatcher();
eventLog.WriteEntry("Monitoring Started");
}
protected override void OnStop()
{
eventLog.WriteEntry("Monitoring Stopped");
}
public void OnChanged(object source, FileSystemEventArgs e)
{
WatcherChangeTypes wct = e.ChangeType;
eventLog.WriteEntry(e.ChangeType.ToString() + "-" + e.FullPath);
}
}
、と私は正直にそれはWindowsで行うのかどうかはわかりませんが、あなたはのSysinternalsプロセスモニターユーティリティを見てみたいことがありヒントのために。 –
Windows監査ポリシーが役立ちます。 http://www.techotopia.com/index.php/Auditing_Windows_Server_2008_File_and_Folder_Access –
@ JianpingLiu監査ポリシーは、障害イベントのみのグループポリシーで既に設定されているため、追加できません。それは本当にここで私を助けません。監査ポリシー以外の方法はありませんか? –