我如何知道 Windows 上文件最后一次被读取或访问的时间?

我如何知道 Windows 上文件最后一次被读取或访问的时间?

我需要确定某个文件在过去(比如说)两天内是否被访问过。

在 Windows Server 2008 R2 上可以实现这个吗?

答案1

事实发生之后?不,除非审计 ACL 是从父级继承的,或者直接在文件上设置“读取文件”权限,否则我不这么认为。如果您确实启用了文件系统审计,则可以查看安全日志以查找此信息,大多数人会将其传输或传输到某种工具进行解析。

如果这是目标的话,您还可以考虑使用像 Tripwire 这样的工具来维护文件完整性。

答案2

实际上有一种方法,但自 Vista/2008 以来它已默认禁用,我刚刚验证它在 Win7/2008R2 中默认被禁用。

出于性能考虑,注册表设置NtfsDisableLastAccessUpdate现在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem默认为 1。如果您将其更改为 0,则 NTFS 将更新文件/文件夹的 LastAccessTime 属性。

您可以通过查看文件/文件夹的属性来查看此值,也可以使用 PowerShell 脚本提取信息。不过,请务必先进行测试,以确保性能影响不会太严重。

此外,NTFS 不会总是立即更新信息。据微软称

NTFS 文件系统会将文件的最后访问时间的更新延迟最多 1 小时。

答案3

作为@murisonc 指出、Windows 上的 NTFS 卷跟踪最后访问时间,它们默认情况下不这样做,并且可以通过设置注册表项轻松启用它。

您可以将其与文件完整性监控工具结合使用,例如威瑞系统公司或者绊线,可以提供自动警报和报告。

文件系统审计工具也可能是一种选择,尽管许多工具依赖于启用对象审计,这可能会降低性能。其他一些工具则依赖于文件系统过滤驱动程序,但这些驱动程序可能有点不稳定。

答案4

本指南应该可以帮你实现对文件的审核:http://www.discoveryourpc.net/2010/01/auditing-access-to-files-on-windows-7.html

它适用于 Windows 7,但与 2008 几乎相同。

您也可以使用组策略来实现这一点。但是正如您所说,您不是专业管理员,这不适合您。

您需要添加要审核的用户或组。我建议添加对父文件夹具有访问权限的同一组。

您必须告知用户您审核的内容。在您的案例中是“文件访问”。如果您不告知他们,审核可能是非法的。

相关内容