我们知道,在$STANDARD_INFORMATION属性(标准信息属性)$FIIE_NAME属性(文件名属性)中都有时间值。当你在Windows下查看一个文件的属性时,只能看到来自于$STANDARD_INFORMATION属性的三个时间值,即创建时间、最后修改时间和最后访问时间。$FIIE_NAME属性中的时间值只有在文件建立和移动时才会更新, 目前尚未发现其他可以致使其更新的情况。因此,在此我们只概述一下$STANDARD_INFORMATION属性中的时间值的更新:
建立时间。在Windows下,NTFS对时间值的更新类似于FAT文件系统,创建时间对应于一个“新”文件建立时的时间值。不管你是直接建立一个新文件还是拷贝一个文件,这个新建文件的时间值将被设置成当前时间值。如果是移动一个文件,哪怕是将其移动到不同的卷中,文件也会保持原有的建立时间值。
最后修改时间。当$DATA属性、$INDEX_ROOT属性或$INDEX_ALLOCATION属性中的任何一个发生改变时,最后修改时间都会被更新。如果对文件行移动或拷贝,文件的内容并没有发生变化,所以会保持原来的创建时间值。如果一个文件有多个$DATA属性,当非默认属性发生改变时,最后修改时间也会被更新。如果改变一个文件的属性或对该文件进行重命名时,所有的时间值郡不会发生改变。
M叮修改时间。当任何属性发生改变时,该时间值都会发生变化。通过观察还发现,当应用程序打开一个文件但并未对其内容做任何更改的情况下,MFT修改时间也会发生变化。将文件移动到其他的卷中时,该时间值似乎不发生改变。需要注意的是,在Windows下查看一个文件的属性时,这个时间值并不会被显示,可以通过使用一些取证工具对其进行查看。
最后访问时间。当查看文件的元数据或内容时,这个时间值将会被更新。文件被打开、或者即使在Windows下查看一个文件的属性也会导致该时间值发生变化。对文件进行拷贝或移动时,原文件的最后访问时间将会被更新。为了提高效率,Windows并不马上将更新后的最后访问时间写入磁盘,甚至有可能一直将其保存在内存中一个小时而不向磁盘中写入。在Windows中提供了一个选项,可以用来关闭对最后访问时间的更新。