![安装 Windows 的文件系统是否会影响 Windows 注册表配置单元中的时间戳的时区设置?](https://linux22.com/image/1597458/%E5%AE%89%E8%A3%85%20Windows%20%E7%9A%84%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E6%98%AF%E5%90%A6%E4%BC%9A%E5%BD%B1%E5%93%8D%20Windows%20%E6%B3%A8%E5%86%8C%E8%A1%A8%E9%85%8D%E7%BD%AE%E5%8D%95%E5%85%83%E4%B8%AD%E7%9A%84%E6%97%B6%E9%97%B4%E6%88%B3%E7%9A%84%E6%97%B6%E5%8C%BA%E8%AE%BE%E7%BD%AE%EF%BC%9F.png)
这个问题与注册表文件本身的文件系统时间戳无关。
据我所知,当 Windows 安装在 NTFS 文件系统上时,Windows 注册表中的时间戳将存储为 UTC 时间戳。当 Windows 安装在 FAT 文件系统(例如 FAT32)上时,这种情况会改变吗?时间戳是否存储为本地时间,还是仍为 UTC?
问题也可以简化:Windows 注册表配置单元中的时间戳是否始终是 UTC 时间戳?
答案1
FAT 使用 16 位值的 MAC 时间戳(与 NTFS MACB 不同)。7 位与年份相关,4 位与月份相关,5 位与日期相关。由于年份范围限制为 7 位,因此 FAT32 文件系统的年份范围在 1980 年至 2107 年之间。虽然这涵盖了日期和年份,但时间遵循相同的概念,使用 16 位值表示小时、分钟和秒。由于一天中只有有限的时间,因此这个区域并不像我们在 32 位值的组合中看到的年份部分那么简单。
FAT64/exFAT 仍然受到其他版本 FAT 所遵循的相同规则的限制。这些规则的例外是 FAT64/exFAT 支持以 UTC 格式存储时间戳时间,而不是当地时间。然而,与 NTFS 不同,NTFS 中的 UTC 时间戳以 100ns 为间隔存储为 64 位数字并以纪元时间为单位。此外,时间分辨率设置为 1601 年 1 月 1 日。
从注册表角度来看,上次访问时间 (A) 是 Windows XP 与更高版本之间一个被忽视的差异领域。据 Microsoft 称,此时间戳由注册表确定为打开或关闭,位于 SYSTEM/CurrentControlSet/Control/FileSystem/NtfsDisableLastAccessUpdate 中。对于 Windows XP,此值默认设置为“0”,这意味着当用户打开文件夹或文件时,A 值会更新。但是,从 Windows Vista/7 开始,Microsoft 将此值切换为“1”,这意味着打开文件和文件夹时,A 时间戳不再更新。
另一件需要注意的相关事项:如果您将文件从 FAT 系统复制到 NTFS 系统,它将保留相同的修改日期,但会将创建日期和时间更改为当前时间。如果剪切并粘贴文件,它将保留相同的修改日期和时间,并将创建日期保持与之前相同。
-编辑- 在评论后完成此操作:
至少从 Windows XP 开始,Windows 注册表配置单元始终是 UTC 时间戳。基块在偏移量 12 处包含 8 位长度的“上次写入时间戳”,该时间戳被视为 UTC 文件时间。