强制 Windows 8 在处理 BIOS 时钟时使用 UTC

强制 Windows 8 在处理 BIOS 时钟时使用 UTC

我的笔记本电脑上装有 Arch Linux + Windows 8。在以前版本的 Windows 中,注册表中有一个 DWORD ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal),用于在本地时间和 UTC 之间切换,但这在 Windows 8 中似乎不再起作用。

我现在在 Windows 中获取 UTC 时间,因为它认为 BIOS 为其提供了本地时间,而该时间实际上是 UTC 时间,并且重新启动到 Arch Linux 后,时钟变为本地时间-0400,因为 Arch 认为 BIOS 具有正确的 UTC 时间。

我不想让 Arch Linux 使用本地时间。在这个前提下,有什么可行的解决方案吗?

答案1

RealTimeIsUniversal 确实存在缺陷,不是官方推荐的解决方案(也许这就是他们在 Win8 中禁用它的原因?)参见IBM PC 实时时钟应在 UT 中运行以下是 Raymond Chen 的回复:为什么 Windows 将你的 BIOS 时钟保持在当地时间?。到目前为止,我认为还没有适当的解决方案来解决这个问题。

答案2

默认的 Windows 时间服务在关机时始终将本地时间写入硬件时钟,无论注册表如何显示实际时间为 UTC。除了这个警告之外,如果注册表设置正确,Windows 将正确处理硬件时间时钟。试试这个:

  1. 如果由于尝试让 Windows 使用 UTC 而导致时间混乱,请启动 Windows,并将时间设置为正常时间(正确的时区、无 regedit、启用 Windows 时间服务、最近同步等)
  2. 执行您之前提到的 regedit
  3. 同步时间w32tm /config /update
  4. 禁用 Windows 时间服务Disable Windows Time servicesc config w32time start= disabled
  5. 安装第三方 NTP 客户端
  6. 验证其是否通过重新启动运行

答案3

RealTimeIsUniversal注册表项仍然有效在 Windows 8 和 10 中!使用此方法的说明在各处都有多次解释,例如这个答案

我将在这里重复这个答案:

  1. Win+ S,,regeditEnter

  2. 导航至键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

  3. 创建新的 DWORD(32 位)值,并将其命名为RealTimeIsUniversal

  4. 将其值设置为1

完成此操作后,只需重新启动计算机。重新启动并运行后,让 Windows 自动设置时间(单击托盘中的当前时间,Date and Time Settings> Set Time Automatically),这次它不会弄乱它。

答案4

RealTimeIsUniversal对我来说有效。要使其工作,在应用注册表项后,关闭Windows(不睡眠或休眠)。启动计算机并在启动 Windows 之前进入 BIOS,更改 BIOS 中的时间,保存,然后继续启动 Windows。或者,关闭 Windows 后,启动 Linux 并让时间同步完成其工作。如果从 Windows 内部更新时间,Windows 会在重新启动后以某种方式将错误的时间更新到系统中。

相关内容