让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服务器地址。

通过任务计划程序设置“登录时”同步

通过创建任务计划,可以精确控制同步频率。

步骤

  1. 点击“开始”按钮,在搜索框中输入 “任务计划程序” 并打开它。
  2. 在右侧的“操作”栏中,点击 “创建基本任务...”
  3. 创建基本任务向导
    • 名称:输入一个易于识别的名称,例如“登录时同步时间”。
    • 触发器:选择 “当前用户登录时”
    • 操作:选择 “启动程序”
    • 程序或脚本:输入 w32tm
    • 添加参数:输入 /resync。这个命令会强制立即同步时间。
  4. 点击“完成”创建任务。
  5. (先把时间调到不正确的日期),在任务计划程序界面选择该任务,右键选择运行,测试系统时间是否能同步。

然而,经过上述的四步,系统还是不能正常自动同步,是因为有两个细节需要处理。

细节一 需要开启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路径的MaxNegPhaseCorrectionMaxPosPhaseCorrection修改为0xFFFFFFFF

完成以上步骤后,系统就可以开机联网后自动同步时间。当然,最简单直接的解决启动时时间错误的方法是更换主板的CMOS电池。

相关资料

Windows 时间服务工具和设置 | Microsoft Learn
Windows由于与正确时间偏差太大无法进行时间同步

posted @ 2025-12-03 17:59  欧歌  阅读(0)  评论(0)    收藏  举报