apache “右键单击文件”是否会更新其上次访问时间?

dpiehjr4  于 2022-11-16  发布在  Apache
关注(0)|答案(2)|浏览(176)

我需要检查文件的最后访问时间。我已经使用'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)的一部分。请给我一些启发。

vh0rcniy

vh0rcniy1#

由于我没有在这里得到快速的回应,我把这个问题发布在serverfault上-答案是相当解释。
这是来自doc的语句。
不是所有的文件系统都可以记录创建时间和最后访问时间,也不是所有的文件系统都以相同的方式记录它们。例如,FAT上创建时间的分辨率是10毫秒,而写入时间的分辨率是2秒,访问时间的分辨率是1天。因此它实际上是访问日期。NTFS文件系统将文件的更新延迟到上次访问时间后最多1小时。
从这一点上,我觉得一个文件的最后访问时间不应该依赖,除非你寻找更新的一致性。
我的经验:
但是,API GetFileTimeGetFileAttributesEx确实给予了预期的输出,只是无法从General tab下的Accessed:字段的文件Properties中可视化。
我不知道为什么会有这样的行为这就是为什么我问这个问题

lkaoscv7

lkaoscv72#

使用GetFileAttributesEx来检索文件的上次访问时间。它使用文件名而不是HANDLE

BOOL WINAPI GetFileAttributesEx(
  _In_  LPCTSTR                lpFileName,
  _In_  GET_FILEEX_INFO_LEVELS fInfoLevelId,
  _Out_ LPVOID                 lpFileInformation
);

相关问题