![Windows XP/Vista 中的文件创建日期不正确](https://linux22.com/image/500556/Windows%20XP%2FVista%20%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%88%9B%E5%BB%BA%E6%97%A5%E6%9C%9F%E4%B8%8D%E6%AD%A3%E7%A1%AE.png)
看一下这个:
- 在 Windows 机器上创建一个新文件。
- 记下其创建日期/时间。
- 删除该文件。
- 稍等一下。
- 在同一目录下创建一个新文件,并与前一个文件同名。
- 新文件的创建日期/时间将与前一个文件的创建日期/时间相同!
我已经在 Windows XP SP3 和 Windows Vista SP2 x64 上验证了这一点。我很难相信这是一个错误。这真的是操作系统的错误吗?如果不是,为什么会出现这种情况?这让我很为难,因为我使用文件创建日期/时间来跟踪我们正在开发的自定义应用程序中的备份周期。
谢谢。
答案1
这似乎是一项名为“文件系统隧道”的记录功能。请参阅http://support.microsoft.com/kb/172190有关详细信息以及如何通过注册表设置禁用它。
答案2
我不认为这是一个错误,我认为这是设计使然。几个月前我自己也遇到过这种情况。
假设有一个应用程序会为您刚打开的文件创建一个临时的工作副本。在您工作时,您的更改会写入临时文件。当您完成并选择保存文件时,应用程序会删除原始文件并将临时文件重命名或复制到原始文件名。这种情况并不常见,但也并不罕见(许多旧的简单应用程序都以这种方式工作……文本编辑器等)。
在上述情况下,每次保存文件时,其创建日期总是与上次修改日期相匹配!
我不知道幕后到底发生了什么,也许有见解的人会提供更多细节。顺便说一句,有些文件系统根本不存储创建日期,只存储修改和访问日期(例如 ext2)。
更新:我从 xxcopy 的作者那里找到了以下内容,网址:http://www.xxcopy.com/xxcopy15.htm,这可能适用于你正在做的事情:
由于使用文件创建日期存在严重问题,因此我们通常不建议使用此日期
文件创建日期 (File-Create date) 有问题,
文件创建日期的问题可以追溯到微软各种文件管理实用程序的不一致。似乎
该功能的设计者从未明确定义文件日期值的三种不同变化的用途。作为软件开发人员,我们还没有见过关于这个问题的任何官方文件。
答案3
答案4
我在 Windows 7 SP1 上使用 win32 DeleteFile 发现了这个问题。
尝试了一些技巧让它使用正确的“创建”日期,但没有什么效果。如果在删除文件后等待 2-3 分钟,然后创建新文件,日期就会正确。可能需要“刷新所有文件”win32 例程。
它可能会导致严重的错误,在我看来,这是非常不靠谱的事情,设计也很混乱。文件被删除了,消失了,不应该有这样的“重影”。如果你担心,建议使用win32 SetFileTime
。