不知出了什么问题,我的电脑的时间从来不会自动和 NTP 服务器同步,虽然短期内并不会对使用造成什么影响,但倘若放任不管,时钟的偏移量太多,则可能会造成 SSL 和 TOTP 等依赖时间戳的应用出现问题,再者,手动按同步键也很不方便,今天我决定必须要解决这个问题。
SpecialPollInterval
在网上搜索一番之后,我发现有人提到SpecialPollInterval
这个键值,其具体位置是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
,微软官方文档对其的描述如下:
This entry specifies the special poll interval in seconds for manual peers. When the SpecialInterval 0x1 flag is enabled, W32Time uses this poll interval instead of a poll interval determine by the operating system. The default value on domain members is 3,600. The default value on stand-alone clients and servers is 604,800.
对于一般客户端,这个键值的默认值是604800
,也就是一个星期同步一次,这个间隔显然太久,于是我将其设置成了3600
令其一小时同步一次。
w32tm
几天后,当我再次检查时间时,却发现时间仍然没有自动同步,这一次的偏移量已经达到了 15.8 秒。
于是查询「SpecialPollInterval」想要知道其具体的作用和未及预期目的的原因,却发现了微软的一篇疑难解答。这篇疑难解答指出:「每次客户端轮询时间样本到 NTP 服务器时,NTP 客户端都会进入 SPIKE 状态。 时间服务管理其内部状态,如果客户端进入 SPIKE 状态,则客户端不会同步其时间。」
为了解决这个问题,需要将 Windows 时间配置为使用 MinPollInterval/MaxPollInterval 作为轮询间隔。
|
|
服务尚未启动
执行这一行配置时出现了「服务尚未启动」的提示,这说明用于时间同步的服务根本没有启动。如此基础的服务竟然不会自动开机启动,我也不知道这是 Windows 的 Bug 还是我后期使用无意间制造的问题,不管怎样,首先启动这个服务:
|
|
随后 Win + R 运行services.msc
打开服务管理面板,找到「Windows Time」服务,将其启动类型设置为「自动」,即可让其开机自动启动。
再次重新启动电脑,这次打开「设置」–>「时间和语言」–>「日期和时间」–>「附加时钟」,切换到「Internet 时间」选项卡,如果出现了「下次同步」的字样,说明这套系统终于是正常运作了。