我使用GetFileTime检查文件的上次访问时间,它工作。 但它甚至给我我上次右键点击的时间,这是预期的吗? 但它不会显示在文件属性的常规选项卡中的Accessed:字段中。
简短的回答:是的,右键单击文件更新的文件信息,并触发logging的更新,并可以通过GetFileTime检索。
但是,真正的答案有点复杂。
NTFS在技术上更新LastAccess时间只需将文件列在目录中。 所以只要打开文件所在的目录,就会触发该目录中所有文件的更新。
从Windows 7开始,有一个registry项禁用此项以防止NTFS日志填满。 默认值可防止NTFS在列出NTFS卷中的目录时更新每个文件和目录上的上次访问时间戳: https : //technet.microsoft.com/zh-cn/library/cc959914.aspx
这些系统中不同的文件系统和不同的度量标准也有不同的时间分辨率:
不是所有的文件系统都能logging创build和上次访问的时间,并不是所有的文件系统都以相同的方式logging它们。 例如,在FAT上创build时间的分辨率是10毫秒,而写入时间的分辨率是2秒,访问时间的分辨率是1天,所以实际上是访问date。 NTFS文件系统在最后一次访问后最多延迟一个小时,将更新延迟到文件的上次访问时间。
有关详细信息,请参阅这里: http : //msdn.microsoft.com/en-us/library/ms724290(v=vs.85).aspx
对于文件,结构指定文件最后一次读取或写入的时间。 对于目录,结构指定了何时创build目录。 对于文件和目录,指定的date是正确的,但一天的时间总是设置为午夜。 如果底层文件系统不支持上次访问时间,则该成员为零。
从这里: http : //msdn.microsoft.com/en-us/library/aa365739(v=vs.85).aspx
这些发现在这里: https : //superuser.com/questions/232143/windows-7-file-properties-is-date-accessed-always-100-accurate