以编程方式确定上次在 Windows 上修改文件的用户?

2024-02-19

我的任务是用 C# 编写一个简单的命令行实用程序,该实用程序将监视服务器上的一个目录,多个用户将访问该目录以复制/剪切/粘贴/查看数据。我用了文件系统观察者 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx做到这一点,但它缺少一些功能。

是否可以确定user或者至少是计算机名称从哪里访问/修改文件?

(注意:这不必与 FileSystemWatcher 一起使用,我正在寻找任何方法来做到这一点。)


我认为您无法直接从 C# 进行监控。无论如何,都需要主机操作系统的帮助。 Windows 和 NTFS 允许您审核特定目录并将访问记录到主机的安全事件日志中(因此托管共享的服务器必须审核,而不是客户端)。

From KB310399 - 如何在 Windows XP 中审核用户对文件、文件夹和打印机的访问 http://support.microsoft.com/kb/310399

审核用户对文件、文件夹和打印机的访问

审核日志显示在事件查看器的安全日志中。要启用此功能:

  1. 单击“开始”,单击“控制面板”,单击“性能和维护”,然后单击“管理工具”。
  2. 双击本地安全策略。
  3. 在左侧窗格中,双击本地策略将其展开。
  4. 在左窗格中,单击审核策略以在右窗格中显示各个策略设置。
  5. 双击审核对象访问。
  6. 要审核指定文件、文件夹和打印机的成功访问,请选中成功复选框。
  7. 要审核对这些对象的不成功访问,请选中“失败”复选框。
  8. 要启用两者的审核,请选中两个复选框。
  9. 单击“确定”。

指定要审核的文件、文件夹和打印机

启用审核后,您可以指定要审核的文件、文件夹和打印机。为此:

  1. 在 Windows 资源管理器中,找到要审核的文件或文件夹。要审核打印机,请通过单击“开始”,然后单击“打印机和传真”找到它。
  2. 右键单击要审核的文件、文件夹或打印机,然后单击“属性”。
  3. 单击“安全”选项卡,然后单击“高级”。
  4. 单击审核选项卡,然后单击添加。
  5. 在“输入要选择的对象名称”框中,键入要审核其访问权限的用户或组的名称。您可以通过单击“高级”,然后单击“选择用户或组”对话框中的“立即查找”来浏览计算机中的名称。
  6. 单击“确定”。
  7. 选中要审核的操作的“成功”或“失败”复选框,然后单击“确定”。
  8. 单击“确定”,然后单击“确定”。

对于服务器操作系统和 Windows Vista/Windows 7,该过程类似。如果您采用此路线,则可以让 C# 程序读取事件日志(请参阅EventLog http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx类)来查找您想要的数据。

注意:从 vista 开始,您必须是管理员(如果需要,UAC 需提升权限)才能从代码中读取它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式确定上次在 Windows 上修改文件的用户? 的相关文章

随机推荐