2012-02-22 52 views
1

看起來,當您將文件從某個源文件夾移動/複製到某個目標文件夾時,Windows往往會更改父文件夾的修改時間如何在Windows中移動文件而不更改目標父文件夾的修改時間(Win32)?

對於副本,它將目標的父文件夾修改時間更改爲現在。

對於一個移動,它看起來像改變了源的父文件夾和目的地的父文件夾修改時間。

這是在NTFS上。

我推測這是因爲NTFS正在更新文件夾元數據中的目錄索引條目。

如何使用Win32 API在不改變源/目標父文件夾的修改時間的情況下在Windows 中複製或移動文件?

回答

1

SetFileInformationByHandle應該允許您將修改時間恢復爲您找到它的方式。如有必要,您可以使用交易,以避免重複更改的風險。

但是,我相信只有在啓用了SE_RESTORE權限的情況下,您才能更改目錄上的時間戳,因此您需要以管理員身份運行。 (注:這是因爲你需要指定FILE_FLAG_BACKUP_SEMANTICS CreateFile時,爲了得到一個目錄句柄,你可以不用特殊的特權。)

它可能會更有意義的其他解決的問題結束,即修改任何代碼或程序由於修改時間改變而變得不安。畢竟,修改文件夾內容的時間會在文件夾內容發生更改時發生更改 - 這就是它的用途!

相關問題