我需要检查文件的最后访问时间。我已经使用'GetFileTime'来读取最后访问时间。注意,这需要文件handle
作为第一个参数。这意味着在我将句柄传递给GetFileTime
之前,我需要创建句柄。所以我使用CreateFile(MyFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
创建了句柄
因此,我没有得到最后一次访问时间一样,从文件的属性General Tab
看到Accessed:
。这是预期的吗?或者我做错了什么?
相反,我得到了最近的时间,当我最后右键单击文件,以检查其属性,但这并不影响General Tab
属性中的Accessed:
字段。
注意:我已经在windows server
中启用了上次访问时间更新。这段代码是我的apache的authz模块(mod_authz.so)的一部分。请给我一些启发。
2条答案
按热度按时间vh0rcniy1#
由于我没有在这里得到快速的回应,我把这个问题发布在serverfault上-答案是相当解释。
这是来自doc的语句。
不是所有的文件系统都可以记录创建时间和最后访问时间,也不是所有的文件系统都以相同的方式记录它们。例如,FAT上创建时间的分辨率是10毫秒,而写入时间的分辨率是2秒,访问时间的分辨率是1天。因此它实际上是访问日期。NTFS文件系统将文件的更新延迟到上次访问时间后最多1小时。
从这一点上,我觉得一个文件的最后访问时间不应该依赖,除非你寻找更新的一致性。
我的经验:
但是,API
GetFileTime
或GetFileAttributesEx
确实给予了预期的输出,只是无法从General tab
下的Accessed:
字段的文件Properties
中可视化。我不知道为什么会有这样的行为这就是为什么我问这个问题
lkaoscv72#
使用
GetFileAttributesEx
来检索文件的上次访问时间。它使用文件名而不是HANDLE
。