在就地升级到 Windows Server 2016 或 Windows 10 版本 1607 期间,不会保留 Windows 时间服务设置

本文介绍升级到 Windows Server 2016 或 Windows 10 版本 1607 后在注册表中禁用 Windows 时间服务设置的问题。

原始 KB 数: 3201265

现象

在以下操作系统升级路径上进行就地升级时,Windows 时间服务不会保留其配置。 而是显示工作组服务器或工作站的默认值。

升级到
Windows Server 2012 或 Windows Server 2012 R2 Windows Server 2016
Windows 7、Windows 8 或 Windows 8.1 Windows 10 版本 1607

受影响的角色

就地升级完成后,以下角色可能会受到影响。

域控制器

承载 PDC 模拟器角色的域控制器 (DC)是域的默认权威时间服务器。 通常,它配置为与高度准确的时间源同步。 域中的所有其他 DC 都将其时间与 PDC 同步。

进行就地升级后,PDC 会失去与配置为与之同步的外部时间服务器的连接。 它还不再宣布它是一个时间服务器。

域中的所有其他 DC 不再宣布它们是时间服务器,并且不再使用域层次结构来同步其时间。 因此,其时间设置可能不再与其对等方设置同步,域成员无法再同步其时间。

可以在 DCDIAG 输出中注意到以下警告:

警告: <DCNAME> 未作为时间服务器播发

你可能还会注意到 DC 不会响应 NTP 客户端请求。 它包括使用 w32tm.exe /stripchart 该工具测试 NTP 服务器可用性时发生的故障。 例如,文本输出可能类似于以下输出:

c:>w32tm /stripchart /computer: <DCName> Tracking <DCName> [10.1.1.100:123]。 当前时间为 2016/10/28 上午 9:00:00。09:00:00 错误:0x800705B4:

域成员

升级的域成员服务器和计算机不再配置为使用域层次结构来同步其时间。 相反,他们将将其时间与 time.windows.com 网站同步。

权威时间服务器

手动配置为权威时间服务器的 Windows 计算机将丢失其配置。 因此,配置为使用这些计算机同步其时间的设备可能无法同步。

你可能还会注意到权威 NTP 服务器不会响应 NTP 客户端请求。 它包括使用 w32tm.exe /stripchart 该工具测试 NTP 服务器可用性时发生的故障。 例如,文本输出可能类似于以下输出:

c:>w32tm /stripchart /computer:<myAuthoritativeTimeServer> Tracking <myAuthoritativeTimeServer> [10.1.1.100:123]。 当前时间为 DateTime>。< <DateTime> 错误:0x800705B4:

注意

执行以下操作系统的就地升级时,不应发生此问题:

  • Windows 10 版本 1507 到 Windows 10 版本 1511
  • Windows 10 版本 1511 到 Windows 10 版本 1607
  • Windows Server 2016 Technical Preview 5 (TP5) 到 Windows Server 2016 (RTM)

原因

这是“症状”部分中列出的 Windows 升级路径中的已知问题。 出现此问题的原因是升级期间不会保留 Windows 时间服务的注册表值。 因此,所有 Windows 时间服务值都将还原为工作组成员服务器或独立计算机的默认状态。

解决方法

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请转到以下Microsoft知识库文章:
322756 如何备份和还原 Windows 中的注册表

注意

在 DC 和已加入域的计算机上,Netlogon 服务必须在 W32time 服务启动之前运行。 升级系统后,请确保 Netlogon 正在运行,然后再尝试上述任何解决方法。

要解决此问题,请使用下列方法之一。

方法 1

升级到 Windows 10 版本 1607 或 Windows Server 2016 之前,请手动备份 w32time 注册表项下的内容。 为此,请按照以下步骤操作:

  1. 按 Windows 徽标键 +R 打开“运行”框。

  2. 键入 regedit,然后按 Enter。

  3. 找到并选择以下注册表项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\

  4. 选择“文件>导出”。

  5. 在“导出注册表文件”对话框中,选择要保存备份副本的位置,然后在“文件名”字段中键入备份文件的名称。

  6. 选择“保存”。

  7. 通过在提升的命令提示符处运行以下命令,保存 W32time 配置进行验证:

    Net start w32time w32tm /query /configuration /verbose > PreUpgradeW32timeConfiguration.txt
    

现在可以将计算机升级到 Windows Server 2016 或 Windows 10 版本 1607。 升级完成后,请按照以下步骤还原 w32time 注册表项下的内容:

  1. 按 Windows 徽标键 +R 打开“运行”框。

  2. 键入 regedit,然后按 Enter。

  3. 按 Windows 徽标键 +R 打开“运行”框。

  4. 键入 regedit,然后按 Enter。

  5. 在注册表编辑器中,选择“文件>导入”。

  6. “导入注册表文件 ”对话框中,选择保存备份副本的位置,选择备份文件,然后选择“ 打开”。

  7. 退出注册表编辑器。

  8. 运行以下命令以删除已弃用的服务触发器:

    reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TriggerInfo\1 /f
    
  9. 重启 W32time 服务,使其能够使用新配置。 为此,请在提升的命令提示符处运行以下命令:

    net stop w32time
    
    net start w32time
    

方法 2

如果在升级到 Windows Server 2016 或 Windows 10 版本 1607 后遇到影响 Windows 时间服务的问题,请按照以下步骤重新注册 w32tm.exe

注意

此过程将还原适用于计算机角色的默认设置。 它不会还原管理员所做的任何自定义。

在提升的命令提示符下,运行以下命令序列:

net stop w32time

w32tm.exe /unregister

w32tm.exe /register

net start w32time

方法 3

如果在升级到 Windows Server 2016 或 Windows 10 版本 1607 后遇到影响 Windows 时间服务的问题,请按照以下步骤从 Windows.old 文件夹还原设置。

重要

以下步骤应由高级用户完成。

  1. 从 Windows.old 文件夹中导出注册表项。

    1. 按 Windows 徽标键+R 打开 Windows 运行框。

    2. 键入 regedit,然后按 Enter。

    3. 找到并单击 HKEY_LOCAL_MACHINE

    4. “文件 ”菜单上,单击“ 加载 Hive”。

    5. 找到并单击 C:\Windows.old\Windows\System32\Config\System 该文件,然后单击“ 打开”。

    6. “加载 Hive ”对话框中,键入“脱机”,然后单击“ 确定”。

    7. 展开 “脱机”。

    8. 找到并单击以下注册表子项:ControlSet001\Services\W32Time\

    9. 单击“文件>导出”。

    10. 在“导出注册表文件”对话框中,选择要在其中保存注册表的本地硬盘上的位置,然后在“文件名”字段中键入备份文件的名称。

    11. 单击“ 保存”。

    12. 找到并单击以下注册表子项:HKEY_LOCAL_MACHINE\Offline

    13. “文件”菜单上,单击“卸载 Hive,然后在“确认卸载 Hive”对话框中单击“”。

    14. 退出注册表编辑器。

  2. 在恢复模式下重启计算机。

    1. 选择“开始>设置更新和安全>恢复”>
    2. 在右侧窗格中,单击“高级启动”下的立即重启”。
    3. 计算机重启后,选择“故障排除,然后选择“命令提示符”。
    4. 选择本地管理员用户,然后插入密码。

    注意

    这会在恢复模式下重启计算机,并提供命令提示符窗口。

  3. 从步骤 1 导入保存的注册表项。

    1. 在命令提示符下,键入 regedit,然后按 Enter

    2. 找到并选择 HKEY_LOCAL_MACHINE

    3. “文件 ”菜单上,单击“ 加载 Hive”。

    4. 找到并选择 C:\Windows\System32\Config\System 该文件,然后单击“ 打开”。

    5. “加载 Hive”对话框中,键入“脱机”,然后单击“确定”

    6. 展开 “脱机”。

    7. 找到并单击以下注册表子项:ControlSet001\Services\W32Time\

    8. 单击“文件”>“导入”

    9. “导入注册表文件 ”对话框中,选择保存备份副本的位置,选择备份文件,然后单击“ 打开”。

    10. 找到并单击以下注册表子项:HKEY_LOCAL_MACHINE\Offline

    11. “文件”菜单上,单击“卸载 Hive,然后在“确认卸载 Hive”对话框中单击“”。

    12. 退出注册表编辑器,然后在正常模式下重启计算机。

验证解决方法结果

若要验证 Windows 时间服务现在可以保留其配置,请执行以下步骤:

  1. 在 DC 上运行DCDiag.exe,以确保它们以时间服务器的形式播发。

  2. 确保 DC 或权威 NTP 服务器响应 NTP 客户端请求而不出错。 例如,命令输出如下所示:

    c:<w32tm /stripchart /computer:<myTimeServer>
    跟踪 <myTimeServer> [10.1.1.100:123]。
    当前时间为 DateTime>。<
    <DateTime> d:+00.0013494s o:-00.0891868s [ * ]

  3. 对于高级用户,请查询 W32time 配置,并确保按预期配置时间提供程序。 如果使用方法 1 作为解决方法,可以将升级后配置与保存的预配置数据进行比较。 例如,命令输出如下所示:

    c:\ >w32tm /query /configuration /verbose > PostUpgradeW32timeConfiguration.txt

参考

有关相关 Netlogon 问题的详细信息,请单击以下文章编号以查看Microsoft知识库中的文章:
3201247 Netlogon 服务在升级到 Windows Server 2016 后不会保留设置