我們知道,在$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中提供了一個選項,可以用來關閉對最后訪問時間的更新。