从睡眠状态恢复后 Windows XP 时钟设置不正确

从睡眠状态恢复后 Windows XP 时钟设置不正确

我在笔记本电脑上双启动 Linux 和 Windows XP。我在 XP 中添加了以下注册表项,以从 BIOS 支持世界时:

HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

当我启动 XP 时,时钟设置正确,但如果机器从睡眠状态唤醒,时钟就会关闭几个小时。

有没有办法让 XP 在唤醒时正确使用世界时间设置?如果没有,我可以阻止 XP 在恢复时设置时钟吗?

答案1

我猜想 Windows 在从睡眠状态唤醒时会以某种方式对系统时间产生错误。根据维基百科文章您引用的注册表项无法完全起作用,即使在较新版本的 Windows 上也是如此:

Windows 要求计算机的实时时钟按照本地时间运行。从 Windows NT 开始,注册表项中就有 RealTimeIsUniversal=1,但此功能尚未得到支持或完全实现(包括 Vista),因此无法按照协调世界时运行实时时钟。

我认为最好的选择是告诉 Linux 系统时钟以当地时间运行,并且每年使用两次 DST。

预计到达时间: 本文更详细地说明了该问题,并且暗示该注册表项的问题已在 Vista SP2 和 Windows 7 中得到修复:

2001-07-09:我收到了 Microsoft 基础内核团队中某个人的回复,他对 RealTimeIsUniversal 很感兴趣,他们查看了 NT 内核源代码的相关部分。RealTimeIsUniversal 标志确实存在(NT 仍在使用 UTC RTC 的 RISC 机器上运行的时代遗留下来的),但它的实现现在似乎不完整,并且目前 Microsoft 的文档和回归测试套件未涵盖它,因此目前不建议使用它。过去几天已经发现了几个潜在的 RealTimeIsUniversal 错误,可能还会有更多。例如,内核调试器假定 CMOS 时间是本地时间,当 RealTimeIsUniversal=1 时,它会错误地获取时间。在 CPU 暂停后恢复处理的代码或计算 DST 更改时间的代码中可能存在类似的问题。

2008-10-31:太好了!微软核心操作系统部门的某人在给我的一封电子邮件中暗示,Vista SP2 和 Windows 7 都将修复 RealTimeIsUniversal=1 支持中的问题,这些问题导致 Windows 无法以 UTC 运行 CMOS 时钟(即,在恢复挂起/休眠的 Windows 后时间会出错)。但他警告说,CMOS 时钟中对 UTC 的这种改进支持可能不会立即得到广泛记录,细节将来可能会发生变化。

因此,总而言之,我认为您有两个选择:

  1. 升级到最新的操作系统。
  2. 将 Linux 切换到本地时间。

PS:与此处的其他海报相反,这不能是 CMOS 电池。只要系统有电,实时时钟就不会由电池供电。这显然包括睡眠模式。如果 CMOS 电池没电,实时时钟会重置为出厂设置,通常是几年前的 1 月 1 日。几个小时的偏移根本不会发生,因为没有时钟“状态”可以在完全断电后继续存在。它不像带有易碎电池的挂钟,即使电池没电也能保留时间。

答案2

如果启动时时间正确(因为它正在同步),并且只要 Windows 存在并且时间前进,时间就是正确的,但 Windows 处于睡眠状态时时间不会前进,那么您很可能应该检查 CMOS 电池。

答案3

这听起来不像是 CMOS 电池,因为它通常会将时间重置为固定日期,而不是“关闭几个小时”。

另一个临时解决方案是安装类似原子钟同步并将其设置为“每日自动同步”。这将使时钟重新对齐。

相关内容