计算机在运行 Windows Vista、Windows Server 2008、Windows 7 或 Windows Server 2008 R2 时无法识别网络,并且它是子域的成员

本文提供了一种解决方案,可解决当此计算机是子域的成员时计算机无法识别网络的问题。

适用于:  Windows 7 Service Pack 1,Windows Server 2012 R2
原始 KB 编号:   980873

症状

您的计算机正在运行 Vista Windows Windows Server 2008、Windows 7 或 Windows Server 2008 R2。 如果此计算机是子域的成员,则计算机无法识别网络。 它可能会导致将计算机的防火墙设置为公共配置文件。

此外,类似以下示例的事件将记录在 Applications 事件日志中:

备注

错误0x54B指示指定的域不存在或无法联系。

原因

发生此问题的原因是计算机在计算机加入子域 (后) 无法连接到林域中的 PDC 主域控制器。 NLA (网络位置感知) 服务希望能够枚举域的林名称,为连接选择正确的网络配置文件。 该服务通过调用林根名称,在 UDP (用户数据报协议) 端口 389 到根域控制器上发出 LDAP (轻型目录访问协议) 查询来实现此目标。 DsGetDcName 该服务希望能够连接到林域中的 PDC 以填充以下注册表子项:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Cache\IntranetForests

如果阻止 DNS 名称解析或与 DC 的连接尝试,NLA 将无法在连接上设置适当的网络配置文件。

解决方案

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

方法 1

配置防火墙设备不阻止 UDP/TCP 端口 389 上的通信。 若要详细了解如何执行,请参阅 Service overview and network port requirements for Windows

方法 2

警告

如果使用注册表编辑器或使用其他方法错误地修改了注册表,则可能会发生严重问题。 这些问题可能需要重新安装操作系统才能解决。 Microsoft 无法保证可以解决这些问题。 修改注册表的风险由您自行承担。

  1. 将子域中的一台计算机配置为从根域连接到 PDC。

  2. 重启计算机。 计算机现在应该能够识别网络。 此外,防火墙上的配置文件将设置为域配置文件。

  3. 将以下注册表子项作为文件导出到域中的共享位置:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Cache\IntranetForests

  4. 将步骤 3 中导出的注册表子项导入无法从域林连接到 PDC 的其他计算机。

  5. 重启计算机。 计算机现在应该能够识别网络,并且防火墙上的配置文件将设置为域配置文件。

方法 3

如果根据子域名标识网络配置文件就足够了,那么缓解 NLA 在主动重试期间所花时间可能是正确的方法。

若要部署更改 NLA 使用的重试次数的注册表设置,请按照以下步骤操作:

  1. 在路径下创建与林根域匹配的新注册表项:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Cache\Intranet\

  2. 在林根域名称的新创建的注册表项中,添加以下两个注册表值:

    • 故障 REG_DWORD值为 1

    • 成功 REG_DWORD值为 0

    它将导致 NLA 进入其最低重试计数,并且应该导致标识持续几分钟。