让Windows系统在每次登录时自动联网同步时间
问题描述
我最近发现一台老台式电脑因为主板电池失效,电脑每次断电后启动都会复位至某一较早年份,即使在控制面板设置了与Internet时间服务器同步也不会自动同步时间(控制面板这个选项实际上是系统默认每周自动同步一次)。要让它在你每次登录时都同步,需要进行以下的设置。
Windows 时间服务 (W32Time)简要介绍
(以管理员身份启动)net start w32time
帮助文档:w32tm /?
我自己的笔记本的回显:
C:\Windows\System32>w32tm /query /status
Leap 指示符: 3(未同步)
层次: 0 (未指定)
精度: -23 (每刻度 119.209ns)
根延迟: 0.0000000s
根分散: 0.0000000s
引用 ID: 0x00000000 (未指定)
上次成功同步时间: 未指定
源: Local CMOS Clock
轮询间隔: 10 (1024s)
C:\Windows\System32>w32tm /query /source
Local CMOS Clock
需要设置的win7电脑的回显中的source是time.windows.com,如果不是的话,需要通过w32tm命令修改为可用的NTP服务器地址。
通过任务计划程序设置“登录时”同步
通过创建任务计划,可以精确控制同步频率。
步骤
- 点击“开始”按钮,在搜索框中输入 “任务计划程序” 并打开它。
- 在右侧的“操作”栏中,点击 “创建基本任务...”。
- 创建基本任务向导:
- 名称:输入一个易于识别的名称,例如“登录时同步时间”。
- 触发器:选择 “当前用户登录时”。
- 操作:选择 “启动程序”。
- 程序或脚本:输入
w32tm。 - 添加参数:输入
/resync。这个命令会强制立即同步时间。
- 点击“完成”创建任务。
- (先把时间调到不正确的日期),在任务计划程序界面选择该任务,右键选择运行,测试系统时间是否能同步。
然而,经过上述的四步,系统还是不能正常自动同步,是因为有两个细节需要处理。
细节一 需要开启w32tm服务
在任务计划程序界面选择该任务,右键选择属性,在操作页添加
操作:选择 “启动程序”。
- 程序或脚本:输入 net。
- 添加参数:输入 start w32time。
- 把此操作调整到w32tm /resync之前执行。
最后在同步后关闭w32tm服务
操作:选择 “启动程序”。
- 程序或脚本:输入 net。
- 添加参数:输入 stop w32time。
- 把此操作调整到w32tm /resync之后执行。
细节二 修改w32tm服务的最大负向时间校正和最大正向时间校正
Windows在当前系统时间与NTP服务器偏差默认允许0x0000d2f0(54000)即15个小时,改为0xffffffff默认允许最大偏差为正负15小时,可以修改注册表使其强制更新。
打开注册表,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config路径的MaxNegPhaseCorrection和MaxPosPhaseCorrection修改为0xFFFFFFFF。
完成以上步骤后,系统就可以开机联网后自动同步时间。当然,最简单直接的解决启动时时间错误的方法是更换主板的CMOS电池。
相关资料
Windows 时间服务工具和设置 | Microsoft Learn
Windows由于与正确时间偏差太大无法进行时间同步

浙公网安备 33010602011771号