2012-02-22 150 views
1

看起来,当您将文件从某个源文件夹移动/复制到某个目标文件夹时,Windows往往会更改父文件夹的修改时间如何在Windows中移动文件而不更改目标父文件夹的修改时间(Win32)?

对于副本,它将目标的父文件夹修改时间更改为现在。

对于一个移动,它看起来像改变了源的父文件夹和目的地的父文件夹修改时间。

这是在NTFS上。

我推测这是因为NTFS正在更新文件夹元数据中的目录索引条目。

如何使用Win32 API在不改变源/目标父文件夹的修改时间的情况下在Windows 中复制或移动文件?

回答

1

SetFileInformationByHandle应该允许您将修改时间恢复为您找到它的方式。如有必要,您可以使用交易,以避免重复更改的风险。

但是,我相信只有在启用了SE_RESTORE权限的情况下,您才能更改目录上的时间戳,因此您需要以管理员身份运行。 (注:这是因为你需要指定FILE_FLAG_BACKUP_SEMANTICS CreateFile时,为了得到一个目录句柄,你可以不用特殊的特权。)

它可能会更有意义的其他解决的问题结束,即修改任何代码或程序由于修改时间改变而变得不安。毕竟,修改文件夹内容的时间会在文件夹内容发生更改时发生更改 - 这就是它的用途!

相关问题