我的笔记本电脑上装有 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 将正确处理硬件时间时钟。试试这个:
- 如果由于尝试让 Windows 使用 UTC 而导致时间混乱,请启动 Windows,并将时间设置为正常时间(正确的时区、无 regedit、启用 Windows 时间服务、最近同步等)
- 执行您之前提到的 regedit
- 同步时间
w32tm /config /update
- 禁用 Windows 时间服务Disable Windows Time service
sc config w32time start= disabled
- 安装第三方 NTP 客户端
- 验证其是否通过重新启动运行
答案3
RealTimeIsUniversal
注册表项仍然有效在 Windows 8 和 10 中!使用此方法的说明在各处都有多次解释,例如这个答案。
我将在这里重复这个答案:
Win+ S,,
regedit
。Enter导航至键:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
。创建新的 DWORD(32 位)值,并将其命名为
RealTimeIsUniversal
。将其值设置为
1
。
完成此操作后,只需重新启动计算机。重新启动并运行后,让 Windows 自动设置时间(单击托盘中的当前时间,Date and Time Settings
> Set Time Automatically
),这次它不会弄乱它。
答案4
RealTimeIsUniversal
对我来说有效。要使其工作,在应用注册表项后,关闭Windows(不睡眠或休眠)。启动计算机并在启动 Windows 之前进入 BIOS,更改 BIOS 中的时间,保存,然后继续启动 Windows。或者,关闭 Windows 后,启动 Linux 并让时间同步完成其工作。如果从 Windows 内部更新时间,Windows 会在重新启动后以某种方式将错误的时间更新到系统中。