我正在运行装有 OS X Leopard 和 Windows 7 Release Candidate(使用 bootcamp)的 iMac。有时当我启动 Windows,然后重新启动 OSX 时,我发现 Windows 已将系统时钟更改为使用错误的时间。我在使用 Vista 和 bootcamp 时也遇到过这个问题。
我该如何防止这种情况发生?
答案1
编辑:在使用我最初发布的方法几天后,我发现该RealTimeIsUniversal
标志作为 Windows NT 遗留下来的未维护的标志,实际上非常不稳定且不切实际。每隔一段时间,在看似随机的时间间隔内,Windows 时钟就会从 UTC 恢复为本地时间,这非常烦人(并导致一些 git 提交在提交日志中看起来像是来自未来)。这促使我寻找另一个解决方案……
总的来说,问题在于,正如 John Fouhy 在评论中提到的那样,Windows 保持本地时间,而 OS X 保持 UTC 时间(使用指定的时区作为修饰符来提供正确的时间)。为了解决这个问题,其中一个操作系统必须竭尽全力,使用另一个系统的方法来跟踪时间。
现在,我发现迄今为止解决这个问题最可靠的方法是让 OS X 在关机时将其时钟从 UTC 切换到本地时间,然后在启动时将其切换回来。具体方法可以在这里找到在 OSx86 项目 wiki 上,这很有趣。(小提示:有些内容似乎是 OSx86 特有的,即 Leopard 说明的 LaunchDaemon plist。但是,我在 MacBook Pro 上逐字逐句地尝试了 Leopard 方法,效果很好。换句话说,只要严格按照书面说明操作即可,不要介意文件中对 OSx86 的任何引用——它们无关紧要。)
如果您想尝试一下,这里有一个旧解决方案。但请注意:它从未更新过,无法与较新版本的 Windows 正确配合使用,因此它非常不可靠,这是我从惨痛经历中发现的……
同步时钟的另一种方法是通过注册表破解强制 Windows 使用 UTC(我发现的一个技巧来自 Mac OS X 提示):
- 启动 RegEdit (开始->运行..., 输入
regedit
) - 导航 ”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
”。 - 来自编辑菜单,选择新建 -> DWORD 值。
- 将此值命名为“
RealTimeIsUniversal
”。 - 双击
RealTimeIsUniversal
,然后输入1
数值数据。
下次启动 Windows 时,时钟应与 Mac OS X 时钟匹配,并且您仍然可以让 Windows 时区与 Mac OS X 中设置的时区匹配。
答案2
检查你的时钟同步设置在 Windows 中。它可能正在使用互联网源调整时钟并更改时钟。
答案3
检查以确保两个操作系统使用的时区相同。如果其中一个操作系统的时区不同,则可能会更改系统时钟以显示其时区,这将与其他操作系统的时间不同。
答案4
我在 Mac 端有一个登录脚本——在我的例子中是 Leopard——这是一个通过互联网设置时钟的简单 shell 脚本:
#!/bin/sh
ntpdate -uvs time.apple.com
exit 0
因此,当您启动 Windows 时,如果您位于东海岸,它会将时钟向前发送 5 小时,而当您重新启动 Mac OS X 时,它会将时钟设置回 UTC。
干杯...
吉姆·费