我想弄清楚何时以及如何Windows文件更新文件访问时间。 首先,由于性能原因,大多数Windows安装都禁用了“文件访问时间”,因此,在为了激活NTFS文件系统的上次访问时间之前,需要执行以下操作:修改密钥[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
值名称NtfsDisableLastAccessUpdate
到DWORD 0
值数据(如果它当然设置为1)。如果它不存在,只需创建它。在Windows + NTFS文件访问时间
在阅读File Times article MSDN上我仍然怀疑Windows如何更新访问时间。
我的问题如下:
- 做时发出WINAPI
CreateFile()
与FILE_READ_ATTRIBUTES
访问时间更新?在我的情况下,虽然以编程方式进行,但它没有。通过资源管理器Shell打开该文件的文件属性对话框会更新访问时间。 - 在发布WinApi
ExtractIconEx()
以从文件中读取图标时,访问时间是否更新? 在我的情况下这样做编程,它没有。通过资源管理器Shell打开该文件的文件属性对话框会更新访问时间。
如果你问我,这两种情况都应该更新文件访问时间,但在我看来,直接WinApi调用不会更新它们,或者Window/NTFS驱动程序真的滞后, Windows资源管理器做得很好。你认为什么是或可能是这里的问题?
作为一个侧面说明,我没有做CloseHandle()
按:
有关文件 时间戳的唯一保证是该文件的时间 正确反映时,使改变手柄 是关闭。
我的结论是,网络上的观点确实是真实的,而且Windows以随机方式更新文件访问时间,因此实际上不应该依赖Windows文件访问时间。
题外话:对不起法医学家,你必须使用另一种方法证明访问时间,或者你可以在几秒钟内让你的案件失效。 :P
但是,从资源管理器发出文件 - >属性会改变最后的访问时间,是因为它抓住了图标?如果文件没有嵌入自己的图标,并且操作系统根据扩展名默认分配一个文件,那么它们的访问时间会更新。如果文件属性/元数据不是文件属性/元数据,那么浏览器必须从文件中获取其他类型的信息? – Shinnok 2011-02-11 14:36:28