![Windows Server 2008 R2 系统时间随机重置为 4 小时前](https://linux22.com/image/632637/Windows%20Server%202008%20R2%20%E7%B3%BB%E7%BB%9F%E6%97%B6%E9%97%B4%E9%9A%8F%E6%9C%BA%E9%87%8D%E7%BD%AE%E4%B8%BA%204%20%E5%B0%8F%E6%97%B6%E5%89%8D.png)
我遇到了一个问题,时间会随机跳转到 4 小时前。因此,所有计划任务(例如备份)都无法在正确的时间发生,并且我们正在使用的某些时间关键型应用程序(例如会计系统)无法运行。
例如,如果实际时间是下午 4 点(美国东部时间),系统时钟将显示中午 12 点。如果您再次将系统时钟重置为正确时间,系统时钟将再次随机向后跳转 4 小时。
- 操作系统:Windows Server 2008 R2 标准版 SP1
- 该服务器不在虚拟机上且未加入域。
- 我们的时区是 EST。
- Windows 设置为 EST 时区。
- BIOS 时钟采用 UTC。
- 作为参考,EST 比 UTC 晚 4 小时。
- 为了调试目的,我禁用了 Windows 时间服务和我能想到的任何其他会更改系统时间的服务。
我检查了事件查看器,发现有一些与时间变化相关的“Kernel-General”事件。以下是示例:
<?xml version="1.0" encoding="UTF-8"?>
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Kernel-General" Guid="{A68CA8B7-004F-D7B6-A698-07E2DE0F1F5D}" />
<EventID>1</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000010</Keywords>
<TimeCreated SystemTime="2014-05-09T17:04:34.500000000Z" />
<EventRecordID>39254</EventRecordID>
<Correlation />
<Execution ProcessID="4" ThreadID="68" />
<Channel>System</Channel>
<Computer>SERVER</Computer>
<Security UserID="S-1-5-18" />
</System>
<EventData>
<Data Name="NewTime">2014-05-09T17:04:34.500000000Z</Data>
<Data Name="OldTime">2014-05-09T21:05:19.806811800Z</Data>
</EventData>
</Event>
此事件发生在下午 5 点左右。事件发生后,系统时间显示为下午 1 点,比当前时间晚了整整 4 个小时。
安装并运行 Windows 时间服务并将其配置为外部时间同步并不能解决问题。Internet 时间同步将正确设置时间,然后时间将再次随机重置。
每次重新启动计算机时也肯定会出现此问题。
有人听说过这个问题或知道解决办法吗?
答案1
默认情况下,Windows 要求 BIOS 时钟设置为本地时间,不是UTC。Linux 和朋友下的情况并非如此。(这导致双启动系统中的乐趣。)
Windows 最近添加了注册表设置允许将 BIOS 时钟设置为 UTC。但是,此设置不受官方支持,并且已知会导致问题。 http://blogs.technet.com/b/askds/archive/2012/03/09/unresponsive-servers-due-to-dst-and-an-unsupported-registry-key.aspx
从纯技术角度来看,将 BIOS 时钟保持在 UTC 是“更好的选择”。但是,Windows 中有很多历史包袱,要求 BIOS 时钟为本地时间,因此除非有特殊原因,否则您不应该乱改该设置。
因此,我的建议是将您的 BIOS 时钟设置为本地时区,确保您的时区在 Windows 中设置正确,并确保您已将 Windows 时间服务配置为使用外部 NTP 源(由于您不在域中,请使用命令行中的 w32tm 来执行此操作)。