如何确定谁更改了文件?

时间:2009-08-05 08:22:08

标签: c# windows monitoring filesystems

在Windows中,如何以编程方式确定上次更改或删除文件的用户帐户?

我知道设置对象访问审核可能是一个选项,但如果我使用它,那么我就会遇到尝试将审核日志条目与特定文件匹配的问题......听起来复杂而混乱!我想不出任何其他方式,所以有没有人对这种方法或任何替代方案有任何提示?

3 个答案:

答案 0 :(得分:4)

您可以将问题分为两部分:

  1. 每当访问文件时写入日志。
  2. 解析,过滤并显示日志的相关信息。
  3. 在这两个第1部分中,如您所述,写入日志是通过审计的内置功能。重新发明这将是艰难的,可能永远不会像内置功能那样好。

    我会通过在这些文件上设置审核ACL来使用内置功能进行日志记录。然后,我将集中精力提供一个良好的界面来读取事件日志,过滤掉相关事件并以适合您的用户的方式呈现它们。

答案 1 :(得分:3)

您始终可以创建file system filter。这可能是矫枉过正,但这取决于您的目的。您可以在启动时加载它,并且它几乎支持每个文件访问(它们访问时通常用于扫描文件的病毒扫描程序)。

只需记录写入文件的应用程序的“所有者”。

另见MSDN documentation

答案 2 :(得分:0)

我知道这样做的唯一方法是设置FileSystemWatcher并使其保持运行。哦,如果它是在网络驱动器上,它可能会随机丢失连接,因此最好每隔几个小时强制断开连接/重新连接,以确保它有一个全新的连接。