将组策略应用到运行 Windows Server 2003、Windows XP 或 Windows 2000 的计算机后,将发生 Userenv 错误并记录事件

本文提供了一个解决方案,用于解决网络上的计算机无法连接到网络域控制器上 Sysvol 文件夹中的组策略对象(GPO)的问题。

原始 KB 数: 887303

总结

如果组策略应用于网络上的计算机,可能会遇到一个或多个错误和事件。 若要确定问题的原因,必须排查网络上计算机的配置问题。 按照以下步骤排查问题的原因:

  1. 检查服务器和客户端计算机上的 DNS 设置和网络属性。
  2. 检查客户端计算机上的服务器消息阻止签名设置。
  3. 确保所有计算机上都启动 TCP/IP NetBIOS 帮助程序服务、Net Logon 服务和远程过程调用(RPC)服务。
  4. 确保所有计算机上都启用了分布式文件系统(DFS)。
  5. 检查 Sysvol 文件夹的内容和权限。
  6. 确保向所需组授予绕过遍历检查权限。
  7. 确保域控制器未处于日记包装状态。
  8. 运行 dfsutil /purgemupcache 命令。

现象

在运行Microsoft Windows Server 2003、Microsoft Windows XP 或Microsoft Windows 2000 的计算机上遇到以下一个或多个症状:

  • 组策略设置不会应用于计算机。

  • 在网络上的域控制器之间未完成组策略复制。

  • 无法打开组策略管理单元。例如,无法打开域控制器安全策略管理单元或域安全策略管理单元。

  • 如果尝试打开组策略管理单元,将收到以下错误消息之一:

    无法打开组策略对象。 你可能没有适当的权限。
    详细信息:该帐户无权从此工作站登录。

    您没有执行此操作的权限。
    详细信息:拒绝访问。

    无法打开组策略对象。 你可能没有适当的权限。
    详细信息:系统找不到指定的路径。

  • 如果尝试访问任何域控制器上的共享文件,将收到错误消息。 即使登录到服务器,并且尝试访问本地共享,也会发生此症状。 具体而言,此症状可能会影响对域控制器的 Sysvol 共享的访问。

  • 如果尝试访问文件共享,系统会反复提示输入密码。

  • 如果尝试访问文件共享,将收到类似于以下错误消息之一的错误消息:

    \\无法访问Server_Name\Share_Name。 你可能没有使用此网络资源的权限。 请联系此服务器的管理员,了解你是否具有访问权限。
    该帐户无权从此工作站登录。

    \\无法访问Server_Name\Share_Name。
    该帐户无权从此工作站登录。

    找不到网络路径。

如果在 Windows XP 或 Windows Server 2003 上查看应用程序登录事件查看器,则会看到类似于以下事件的事件:

事件类型:错误

事件源:Userenv
事件类别: 无
事件 ID: 1058

日期: 日期
时间:
时间
用户:
User_Name
计算机:
Computer_Name
说明:Windows gpt.ini 无法访问 GPO CN={31B2F340-016D-11D2-945F-00C04FB984F9}、CN=Policies、CN=System、DC= domainname、DC=com 的文件。 该文件必须位于位置 <\\domainname.com\sysvol\domainname.com\Policies\{31B2F340-016D-11D2-945F-00C04FB984 F9}\gpt.ini>。 (Error_Message)。 组策略处理已中止。 有关详细信息,请参阅“帮助和支持中心”。https://support.microsoft.com

事件 ID 1058 中Error_Message占位符中显示的错误消息可能是以下任何错误消息:

  • 找不到网络路径。

  • 拒绝访问。

  • 由于计算机不可用或访问被拒绝,无法从域控制器读取配置信息。

事件类型:错误
事件源:Userenv
事件类别: 无
事件 ID:1030
日期:
日期
时间:
时间
用户:
User_Name
计算机:
Computer_Name
说明:Windows 无法查询组策略对象列表。 描述此原因的消息以前由策略引擎记录。 有关详细信息,请参阅“帮助和支持中心”。https://support.microsoft.com

通常,如果发生事件 ID 1058 和事件 ID 1030,则客户端计算机和成员服务器在计算机启动时会记录它们。 域控制器每五分钟记录一次这些事件。

如果在基于 Windows 2000 的计算机上查看应用程序登录事件查看器,则会看到类似于以下事件的事件:

事件类型:错误
事件源:Userenv

事件类别: 无
事件 ID:1000
日期:
日期
时间:
时间
用户:NT AUTHORITY\SYSTEM
计算机:
Computer_Name
说明:Windows 无法访问 \\ domainname.com\sysvol\domainname.com\Policies\{31B2F340-016D-11D2-945F-00C04FB984F 9}\Machine\registry.pol with (Error_Code)。

事件 ID 1000 中Error_Code占位符中显示的错误代码可以是以下任一错误代码:

  • 5
  • 51
  • 53
  • 1231
  • 1240
  • 1722

原因

如果网络上的计算机无法连接到某些组策略对象,则会出现这些问题。 具体而言,这些对象位于网络的域控制器上的 Sysvol 文件夹中。

解决方法

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请确保仔细执行这些步骤。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表

若要解决此问题,必须排查网络配置问题,以缩小问题原因,然后更正配置。 若要排查此问题的可能原因,请执行以下步骤:

步骤 1:检查服务器和客户端计算机上的 DNS 设置和网络属性

在局域网连接属性中,必须在所有服务器和客户端计算机上启用Microsoft网络的客户端。 必须在所有域控制器上启用Microsoft网络组件的文件和打印机共享。

此外,网络上的每台计算机都必须使用 DNS 服务器,这些服务器可以解析计算机所属的 Active Directory 林的 SRV 记录和主机名。 通常,常见的配置错误是客户端计算机使用属于 Internet 服务提供商(ISP)的 DNS 服务器。

在记录 Userenv 错误的所有计算机上,检查 DNS 设置和网络属性。 此外,检查所有域控制器上的这些设置,无论它们是否记录 Userenv 错误。

若要验证网络中基于 Windows XP 的计算机上的 DNS 设置和网络属性,请执行以下步骤:

  1. 选择“开始”,然后选择“控制面板”
  2. 如果控制面板设置为“类别视图”,请选择“切换到经典视图”。
  3. 双击“ 网络连接”,右键单击“ 局域网连接”,然后选择“ 属性”。
  4. “常规 ”选项卡上,单击以选中 “Microsoft网络的 客户端”复选框。
  5. 选择 Internet 协议(TCP/IP),然后选择“ 属性”。
  6. 如果选择 了以下 DNS 服务器地址 ,请确保首选和备用 DNS 服务器的 IP 地址是 DNS 服务器的 IP 地址,这些地址可以解析 Active Directory 中的 SRV 记录和主机名。 具体而言,计算机不得使用属于 ISP 的 DNS 服务器。 如果 DNS 服务器地址不正确,请在“首选 DNS 服务器”和“备用 DNS 服务器”框中键入正确的 DNS 服务器的 IP 地址。
  7. 选择“高级,然后选择“DNS”选项卡。
  8. 单击此项可选中 “在 DNS 中注册此连接的地址”复选框,然后选择“ 确定 ”三次。
  9. 启动命令提示符。 若要执行此操作,请选择“开始,选择“运行”,键入 cmd,然后选择“确定”。
  10. 键入 ipconfig /flushdns,然后按 Enter。 键入 ipconfig /registerdns,然后按 Enter
  11. 重启计算机,使更改生效。

若要验证网络中基于 Windows 2000 的计算机上的 DNS 设置和网络属性,请执行以下步骤:

  1. 选择“开始,指向“设置”,然后选择控制面板

  2. 双击“ 网络”和“拨号连接”。

  3. 右键单击 “本地区域连接”,然后选择“ 属性”。

  4. “常规 ”选项卡上,单击以选中 “Microsoft网络的 客户端”复选框。

  5. 如果计算机是域控制器,请单击以选中“ Microsoft网络 的文件和打印机共享”复选框。

    注意

    在多宿主远程访问服务器和Microsoft基于 Internet 安全和加速 (ISA) 服务器的服务器上,可以为连接到 Internet 的网络适配器禁用Microsoft网络组件的文件和打印机共享。 但是,必须为所有服务器的网络适配器启用Microsoft网络组件的客户端。

  6. 选择 Internet 协议(TCP/IP),然后单击“ 属性”。

  7. 如果选择 了以下 DNS 服务器地址 ,请确保首选和备用 DNS 服务器的 IP 地址是 DNS 服务器的 IP 地址,这些地址可以解析 Active Directory 中的 SRV 记录和主机名。 具体而言,计算机不得使用属于 ISP 的 DNS 服务器。 如果 DNS 服务器地址不正确,请在“首选 DNS 服务器”和“备用 DNS 服务器”框中键入正确的 DNS 服务器的 IP 地址。

  8. 选择“高级,然后选择“DNS”选项卡。

  9. 单击此项可选中 “在 DNS 中注册此连接的地址”复选框,然后选择“ 确定 ”三次。

  10. 启动命令提示符。 为此,请选择“开始”,选择“运行,在“打开”框中键入 cmd,然后选择“确定”。

  11. 键入 ipconfig /flushdns,然后按 Enter。 键入 ipconfig /registerdns,然后按 Enter

  12. 重新启动计算机。

若要验证网络中基于 Windows Server 2003 的计算机上的 DNS 设置和网络属性,请执行以下步骤:

  1. 选择“开始,指向控制面板,然后双击“网络连接”。

  2. 右键单击本地区域连接,然后选择“ 属性”。

  3. “常规 ”选项卡上,单击以选中 “Microsoft网络的 客户端”复选框。

  4. 如果计算机是域控制器,请单击以选中“ Microsoft网络 的文件和打印机共享”复选框。

    注意

    在多宿主远程访问服务器和基于 ISA 服务器的服务器上,可以为连接到 Internet 的网络适配器禁用Microsoft网络组件的文件和打印机共享。 但是,必须为所有服务器的网络适配器启用Microsoft网络组件的客户端。

  5. 选择 Internet 协议(TCP/IP),然后选择“ 属性”。

  6. 如果选择 了以下 DNS 服务器地址 ,请确保首选和备用 DNS 服务器的 IP 地址是 DNS 服务器的 IP 地址,这些地址可以解析 Active Directory 中的 SRV 记录和主机名。 具体而言,计算机不得使用属于 ISP 的 DNS 服务器。 如果 DNS 服务器地址不正确,请在“首选 DNS 服务器”和“备用 DNS 服务器”框中键入正确的 DNS 服务器的 IP 地址。

  7. 选择“高级,然后选择“DNS”选项卡。

  8. 单击此项可选中 “在 DNS 中注册此连接的地址”复选框,然后选择“ 确定 ”三次。

  9. 启动命令提示符。 若要执行此操作,请选择“开始,选择“运行”,键入 cmd,然后选择“确定”。

  10. 键入 ipconfig /flushdns,然后按 Enter。 键入 ipconfig /registerdns,然后按 Enter

  11. 重启计算机,使更改生效。

如果网络中客户端计算机配置为自动获取其 IP 地址,请确保运行 DHCP 服务的计算机分配 DNS 服务器的 IP 地址,这些地址可以解析 Active Directory 中的 SRV 记录和主机名。

若要确定计算机用于 DNS 的 IP 地址,请执行以下步骤:

  1. 启动命令提示符。 为此,请选择“开始”,选择“运行,在“打开”框中键入 cmd,然后选择“确定”。
  2. 键入 ipconfig /all,然后按 Enter
  3. 请注意屏幕上列出的 DNS 条目。

如果配置为获取 IP 地址的计算机未使用正确的 DNS 服务器,请查看 DHCP 服务器的文档,了解如何配置 DNS 服务器选项。 此外,请确保每台计算机都可以解析域的 IP 地址。 为此,请键入 ping Your_Domain_Name在命令提示符处Your_Domain_Root ,然后按 Enter。 请改为键入 nslookup Your_Domain_NameYour_Domain_Root,然后按 Enter

注意

预计此主机名将解析为网络上某个域控制器的 IP 地址。 如果计算机无法解析此名称,或者该名称解析为错误的 IP 地址,请确保域的正向查找区域包含有效的 (与父文件夹相同) 主机(A)记录。

若要确保域的正向查找区域包含基于 Windows 2000 的计算机上的有效 (与父文件夹相同) 主机(A)记录,请执行以下步骤:

  1. 在运行 DNS 的域控制器上,选择“开始”,指向程序”,指向“管理工具”,然后选择“DNS”。

  2. 展开 Your_Server_Name,展开 “向前查找区域”,然后选择域的正向查找区域。

  3. 查找 (与父文件夹相同) 主机(A)记录。

  4. 如果主机(A)记录不存在(与父文件夹相同),请执行以下步骤创建一个:

    1. “操作 ”菜单上,选择“ 新建主机”。
    2. IP 地址 框中,键入域控制器的本地网络适配器的 IP 地址。
    3. 单击以选中“ 创建关联指针”(PTR)记录 复选框,然后选择“ 添加主机”。
    4. 收到以下消息时,请选择“是

      (与父文件夹相同) 不是有效的主机名。 是否确实要添加此记录?

  5. 双击 “主机”(A) 记录(与父文件夹相同)。

  6. 验证 IP 地址框中是否列出了 正确的 IP 地址

  7. 如果 IP 地址框中的 IP 地址无效,请在 IP 地址框中键入正确的 IP 地址,然后选择“确定”。

  8. 相反,可以删除包含无效 IP 地址的 主机(A)记录(与父文件夹 相同)。 若要删除 (与父文件夹相同) 主机(A)记录,请右键单击它,然后选择“ 删除”。

  9. 如果 DNS 服务器是也是路由和远程访问服务器的域控制器,请参阅 运行 DNS 或 WINS 的路由和远程访问服务器上的名称解析和连接问题。

  10. 在添加、删除或修改 DNS 记录的所有计算机上,在命令提示符处键入 ipconfig /flushdns ,然后按 Enter

若要确保域的前向查找区域包含基于 Windows Server 2003 的计算机上的有效 (与父文件夹相同) 主机(A)记录,请执行以下步骤:

  1. 在运行 DNS 的域控制器上,选择“开始,指向“管理工具”,然后选择“DNS”。

  2. 展开 Your_Server_Name,展开 “向前查找区域”,然后选择域的正向查找区域。

  3. 查找 (与父文件夹相同) 主机(A)记录。

  4. 如果(与父文件夹相同)主机(A)记录不存在,请按照以下步骤创建一个:

    1. “操作”菜单上,选择“新建主机”(A)。
    2. IP 地址 框中,键入域控制器的本地网络适配器的 IP 地址。
    3. 单击以选中“ 创建关联指针”(PTR)记录 复选框,然后选择“ 添加主机”。
    4. 收到以下消息时,请选择“是

      (与父文件夹相同) 不是有效的主机名。 是否确实要添加此记录?

  5. 双击 “主机”(A) 记录(与父文件夹相同)。

  6. 验证 IP 地址框中是否列出了 正确的 IP 地址

  7. 如果 IP 地址在 IP 地址框中无效,请在 IP 地址框中键入正确的 IP 地址,然后选择“确定”。

  8. 相反,可以删除包含无效 IP 地址的 主机(A)记录(与父文件夹 相同)。 若要删除主机(A)记录,请 右键单击(与父文件夹相同),然后选择“ 删除”。

  9. 如果 DNS 服务器是也是路由和远程访问服务器的域控制器,请参阅 运行 DNS 或 WINS 的路由和远程访问服务器上的名称解析和连接问题。

  10. 在添加、删除或修改 DNS 记录的所有计算机上,在命令提示符处键入 ipconfig /flushdns ,然后按 Enter

步骤 2:检查客户端计算机和成员服务器上的服务器消息阻止签名设置

服务器消息块 (SMB) 签名设置定义网络上的计算机是否对通信进行数字签名。 如果未正确配置 SMB 签名设置,客户端计算机或成员服务器可能无法连接到域控制器。

例如,域控制器可能需要 SMB 签名,但客户端计算机上可能会禁用 SMB 签名。 如果出现此问题,则无法正确应用组策略。 因此,客户端计算机在应用程序日志中记录用户环境(Userenv)错误。 有时,域控制器上的服务器服务和工作站服务的 SMB 签名设置可能会相互冲突。

例如,可以为域控制器的工作站服务禁用 SMB 签名,但域控制器的服务器服务需要 SMB 签名。 在此方案中,如果登录到服务器,则无法打开一个或多个域控制器的本地文件共享。 此外,如果登录到服务器,则无法打开组策略管理单元。
有关如何在域控制器上排查此问题的详细信息,请参阅 无法在域控制器上打开文件共享或组策略管理单元。

如果组策略错误仅在客户端计算机和成员服务器上发生,或者确定 无法在域控制器 上打开文件共享或组策略管理单元不适用于你的情况,请继续排查该问题。

默认情况下,启用 SMB 签名,但在运行 Windows XP、Windows 2000 或 Windows Server 2003 的客户端计算机和成员服务器上进行客户端通信不需要。 建议使用默认配置,因为客户端计算机可以在可能的情况下使用 SMB 签名,但仍会与禁用 SMB 签名的服务器通信。

若要配置客户端计算机和成员服务器,以便启用 SMB 签名,但不需要,必须更改某些注册表项的值。 若要在客户端计算机上更改注册表,请执行以下步骤:

  1. 选择“开始”,选择“运行,在“打开”框中键入 regedit,然后选择“确定”。
  2. 展开以下注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
  3. 在右窗格中,右键单击 enablesecuritysignature,然后选择“ 修改”。
  4. “值”数据 框中,键入 0,然后选择“ 确定”。
  5. 右键单击 requiresecuritysignature,然后选择“ 修改”。
  6. “值”数据 框中,键入 0,然后选择“ 确定”。
  7. 展开以下注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters
  8. 在右窗格中,右键单击 enablesecuritysignature,然后选择“ 修改”。
  9. “值”数据 框中,键入 1,然后选择“ 确定”。
  10. 右键单击 requiresecuritysignature,然后选择“ 修改”。
  11. “值”数据 框中,键入 0,然后选择“ 确定”。

更改注册表值后,重启服务器和工作站服务。 不要重新启动计算机,因为它可能会导致组策略应用,组策略设置可能会再次配置冲突的值。

更改注册表值并在受影响的计算机上重启服务器和工作站服务后,请执行以下步骤:

  1. 查看适用于受影响计算机帐户的 GPO 或 GPO 的组策略设置。
  2. 请确保组策略不会与所需的注册表设置冲突。
  3. 使用组策略对象编辑器查看以下文件夹中的策略设置: Computer Configuration/Windows Settings/Security Settings/Local Policies/Security Options

在运行 Windows Server 2003 的计算机上,SMB 签名组策略设置具有以下名称:

  • Microsoft 网络服务器:对通信进行数字签名(始终)
  • Microsoft 网络服务器: 对通信进行数字签名(如果客户端允许)
  • Microsoft 网络客户端:对通信进行数字签名(始终)
  • Microsoft 网络客户端:对通信进行数字签名(如果服务器允许)

在运行 Windows 2000 Server 的计算机上,SMB 签名组策略设置具有以下名称:

  • 数字签名服务器通信(始终)
  • 数字签名服务器通信(尽可能)
  • 对客户端通信进行数字签名(始终)
  • 数字签名客户端通信(如果可能)

通常,SMB 签名组策略设置配置为“未定义”。 如果定义 SMB 签名组策略设置,请确保了解设置如何影响网络连接。
有关 SMB 签名设置的详细信息,请参阅 更改安全设置和用户权限分配时,可能会出现客户端、服务和程序问题。

如果更改运行 Windows 2000 Server 的域控制器上的 GPO 设置,请执行以下步骤:

  1. 启动命令提示符。 为此,请选择“开始”,选择“运行,在“打开”框中键入 cmd,然后选择“确定”。
  2. 键入 secedit /refreshpolicy machine_policy /enforce,然后按 Enter
  3. 重启受影响的客户端计算机。
  4. 在客户端计算机上的注册表中重新检查 SMB 签名值,以确保它们不会意外更改。

如果更改运行 Windows Server 2003 的域控制器上的 GPO 设置,请执行以下步骤:

  1. 启动命令提示符。 为此,请选择“开始”,选择“运行,在“打开”框中键入 cmd,然后选择“确定”。
  2. 键入 gpupdate /force,然后按 Enter
  3. 重启受影响的客户端计算机。
  4. 在客户端计算机上的注册表中重新检查 SMB 签名值,以确保它们不会意外更改。

如果在重启客户端计算机后注册表中的 SMB 签名值意外更改,请使用下列方法之一查看应用于客户端计算机的应用策略设置:

  • 在基于 Windows XP 的计算机上,使用策略 MMC 管理单元的结果集(Rsop.msc)。 有关策略的结果集的详细信息,请参阅 策略的结果集。

  • 在 Windows 2000 上,使用Gpresult.exe命令行工具检查组策略结果。 要执行此操作,请执行以下步骤:

    1. 从 Windows 2000 资源工具包安装Gpresult.exe。

    2. 在命令提示符下,键入 gpresult /scope 计算机,然后按 Enter

    3. 在输出的“已应用组策略对象”部分中,记下应用于计算机帐户的组策略对象。

    4. 比较应用于这些组策略对象的域控制器上的 SMB 签名策略设置的计算机帐户的组策略对象。

步骤 3:确保所有计算机上都启动 TCP/IP NetBIOS 帮助程序服务

网络上的所有计算机都必须运行 TCP/IP NetBIOS 帮助程序服务。

若要验证 TCP/IP NetBIOS 帮助程序服务是否在基于 Windows XP 的计算机上运行,请执行以下步骤:

  1. 选择“开始”,然后选择“控制面板”
  2. 如果控制面板位于类别视图中,请选择“切换到经典视图”。
  3. 双击 “管理工具”
  4. 双击 “服务”
  5. “服务 ”列表中,选择 “TCP/IP NetBIOS 帮助程序”。 验证状态列下的值是否已启动。 验证“启动类型”列下的值是否为“自动”。 如果状态启动类型值不正确,请执行以下步骤:
    1. 右键单击 TCP/IP NetBIOS 帮助程序,然后选择“ 属性”。
    2. “启动类型 ”列表中,选择“ 自动”。
    3. “服务状态 ”区域中,如果未启动服务,请选择“ 启动”。
    4. 选择“确定”

若要验证 TCP/IP NetBIOS 帮助程序服务是否在基于 Windows Server 2003 的计算机上运行,请执行以下步骤:

  1. 选择开始,指向管理工具,然后选择服务
  2. “服务 ”列表中,选择 “TCP/IP NetBIOS 帮助程序”。 验证状态列下的值是否已启动。 验证“启动类型”列下的值是否为“自动”。 如果状态启动类型值不正确,请执行以下步骤:
    1. 右键单击 TCP/IP NetBIOS 帮助程序,然后选择“ 属性”。
    2. “启动类型 ”列表中,选择“ 自动”。
    3. “服务状态 ”区域中,如果未启动服务,请选择“ 启动”。
    4. 选择“确定”

若要验证 TCP/IP NetBIOS 帮助程序服务是否在基于 Windows 2000 的计算机上运行,请执行以下步骤:

  1. 依次选择“开始”、“程序”、“管理工具,然后选择“服务”。
  2. “服务 ”列表中,选择 “TCP/IP NetBIOS 帮助程序服务”。 验证状态列下的值是否已启动。 验证“启动类型”列下的值是否为“自动”。 如果状态启动类型值不正确,请执行以下步骤:
    1. 右键单击 TCP/IP NetBIOS 帮助程序服务,然后选择“ 属性”。
    2. “启动类型 ”列表中,选择“ 自动”。
    3. “服务状态 ”区域中,如果未启动服务,请选择“ 启动”。
    4. 选择“确定”

此外,请确保尚未使用组策略对象禁用一个或多个必需的系统服务。 使用文件夹中的组策略对象编辑器 Computer Configuration/Windows Settings/Security Settings/System Services 查看这些策略设置。

在 Windows Server 2003 和 Windows XP 上,可以使用策略 MMC 管理单元的结果集(Rsop.msc)检查应用于计算机的所有已应用策略设置。 若要执行此操作,请选择“开始”,选择“运行,在“打开”框中键入 rsop.msc,然后选择“确定”。

在 Windows 2000 上,使用Gpresult.exe命令行工具检查组策略结果。 要执行此操作,请执行以下步骤:

  1. 从 Windows 2000 资源工具包安装Gpresult.exe。
  2. 在命令提示符下,键入 gpresult /scope 计算机,然后按 Enter
  3. 在输出的“已应用组策略对象”部分中,记下应用于计算机帐户的组策略对象。
  4. 将应用于计算机帐户的组策略对象与这些组策略对象的域控制器上的 SMB 签名策略设置进行比较。

注意

如果许多桌面上禁用 TCP/IP NetBIOS 帮助程序服务,则可以使用以下示例Microsoft Visual Basic 脚本同时在组织单位(OU)中的所有计算机上启动 TCP/IP NetBIOS 帮助程序服务。

Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于对适销性或特定用途适用性的默示保证。 本文假设你熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft支持工程师可以帮助解释特定过程的功能,但它们不会修改这些示例,以提供附加的功能或构造过程以满足你的特定要求。

Set objDictionary = CreateObject("Scripting.Dictionary") 
i = 0
Set objOU = GetObject("LDAP://OU=Computers, OU=OUName, OU=OUName, DC=OUName,
DC=OUName,DC=CompanyName,
DC=com")
objOU.Filter = Array("Computer")
For Each objComputer In objOU
        objDictionary.Add i, objComputer.CN
        i = i + 1
Next
For Each objItem In objDictionary
        strComputer = objDictionary.Item(objItem)
        Set objWMIService =
GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer &
"\root\cimv2")

        Set colServices = objWMIService.ExecQuery _
                ("Select * from Win32_Service where Name = 'LmHosts'")
        For Each objService In colServices
                If objService.StartMode = "Disabled" Then
                        objService.Change( , , , , "Automatic")
                End If
        Next
Next

步骤 4:确保所有计算机上都启用了分布式文件系统(DFS)

所有域控制器都必须运行分布式文件系统服务,因为 Sysvol 共享是 DFS 卷。 此外,必须在所有计算机上的注册表中启用 DFS 客户端。

若要确保分布式文件系统服务在基于 Windows Server 2003 的域控制器上运行,请执行以下步骤:

  1. 选择开始,指向管理工具,然后选择服务
  2. “服务 ”列表中,选择“ 分布式文件系统 服务”。 验证状态列下的值是否已启动。 验证“启动类型”列下的值是否为“自动”。 如果状态启动类型值不正确,请执行以下步骤:
    1. 右键单击 “分布式文件系统”,然后选择“ 属性”。
    2. “启动类型 ”列表中,选择“ 自动”。
    3. “服务状态 ”区域中,如果未启动服务,请选择“ 启动”。
    4. 选择“确定”

若要确保 分布式文件系统 服务在基于 Windows 2000 Server 的域控制器上运行,请执行以下步骤:

  1. 依次选择“开始”、“程序”、“管理工具,然后选择“服务”。
  2. “服务 ”列表中,选择“ 分布式文件系统 服务”。 验证状态列下的值是否已启动。 验证“启动类型”列下的值是否为“自动”。 如果状态启动类型值不正确,请执行以下步骤:
    1. 右键单击 “分布式文件系统”,然后选择“ 属性”。
    2. “启动类型 ”列表中,选择“ 自动”。
    3. “服务状态 ”区域中,如果未启动服务,请选择“ 启动”。
    4. 选择“确定”

若要确保所有客户端计算机上都启用了分布式文件系统客户端,请执行以下步骤:

  1. 选择“开始”,选择“运行,在“打开”框中键入 regedit,然后选择“确定”。
  2. 展开以下子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mup
  3. 选择 Mup,然后在右窗格中搜索名为 DisableDFS 的 DWORD 值条目。
  4. 如果 DisableDFS 条目存在且值数据为 1,请双击 DisableDFS“值”数据 框中,键入 0,然后选择“ 确定”。 如果 DisableDFS 值数据已 为 0,或者 DisableDFS 条目不存在,请不要进行任何更改。
  5. 退出注册表编辑器。
  6. 如果更改 了 DisableDFS 值数据,请重新启动计算机。

步骤 5:检查 Sysvol 文件夹的内容和权限

默认情况下,Sysvol 文件夹位于 %systemroot% 该文件夹中。 Sysvol 文件夹包含域的组策略对象、Sysvol 和 Netlogon 共享以及文件复制服务 (FRS) 暂存文件夹。

如果对 Sysvol 文件夹或 Sysvol 共享的权限太严格,则组策略无法正确应用,并导致用户环境(Userenv)错误。 此外,如果缺少 Sysvol 共享或组策略对象,则可能会发生 Userenv 错误。
若要确保 Sysvol 共享可用,请在每个域控制器上的命令提示符处运行 net share 命令。 要执行此操作,请执行以下步骤:

  1. 选择“开始”,选择运行”,在“打开”框中键入 cmd,然后选择“确定”。
  2. 键入 net share,然后按 Enter
  3. 在文件夹列表中找到 SYSVOLNETLOGON

如果一个或多个域控制器缺少 Sysvol 或 Netlogon 共享,则必须排查问题的原因。
有关如何对 Windows 2000 Server 中缺少的 Sysvol 和 Netlogon 共享进行故障排除的详细信息,请参阅 Windows 域控制器上缺少的 SYSVOL 和 NETLOGON 共享疑难解答。

有关如何在 Windows Server 2003 中重新生成 Sysvol 共享的详细信息,请参阅 如何在域中重新生成 SYSVOL 树及其内容。

确保 Sysvol 共享可用后,请确保 Sysvol 文件夹、Sysvol 共享和包含 Sysvol 文件夹的卷的根文件夹配置了正确的权限。

此外,在 Windows 2000 Server 上,必须向“每个人”组授予对包含 Sysvol 文件夹的卷根文件夹的完全控制权限。 在 Windows Server 2003 上,必须向“仅限此文件夹”授予“读取和执行”特殊权限,并且域\用户组必须授予以下标准权限:

  • 读取及执行
  • 列出文件夹内容
  • 读取

此外,在 Windows Server 2003 上,域\用户组必须具有以下特殊权限:

  • 读取并执行“此文件夹、子文件夹和文件”的权限。
  • 创建文件夹/向“此文件夹和子文件夹追加数据”权限。
  • 创建文件/写入“仅子文件夹”的数据权限。

验证 Sysvol 权限后,请确保 Sysvol 文件夹包含所需的组策略对象。 若要查找所需的组策略对象,请使用 Windows 2000 或 Windows Server 2003 资源工具包中的Gpotool.exe程序。

如果在没有任何选项的情况下运行Gpotool.exe程序,它将扫描域中所有域控制器上的所有组策略对象。 如果包括 /checkacl 该开关,该工具还会扫描 Sysvol 访问控制列表(ACL)。 有关运行Gpotool.exe程序的详细输出,请使用 /verbose 开关。

相反,可以手动验证 SYSVOL 文件夹中的各个 GPO。 例如,如果 Userenv 1058 事件中的说明列出了 GPO 的名称,则可以手动验证 SYSVOL 文件夹中的各个 GPO。 为此,可以确保它包含 USER 文件夹、MACHINE 文件夹和Gpt.ini文件。 若要手动验证 SYSVOL 文件夹中的各个 GPO,请执行以下步骤:

  1. 启动命令提示符。 为此,请选择“开始”,选择“运行,在“打开”框中键入 cmd,然后选择“确定”。
  2. 键入 Time/interactive/next:cmd.exe,然后按 ENTER,其中 时间 比当前时间晚 1 或 2 分钟,并采用 24 小时时间格式编写。 例如,下午 1:00 后的 3 分钟将采用 24 小时时间格式的 13:03。
  3. 在上一命令中指定的时间,将打开新的命令提示符窗口。 键入 net 使用 j:\\domainname.com\sysvol\domainname.com\Policies\{GUID},然后按 Enter,其中 GUID 是 Userenv 事件说明中的 GPO 的 GUID。 例如,如果 Userenv 1058 事件说明显示, “文件必须存在于位置 <\\Domain_Name.com\sysvol\Domain_Name.com\Policies\{31B2F340-016D-11D2-945F-00C04FB984 F9}\gpt.ini>,”将在命令中使用的 GUID 为 31B2F340-016D-11D2-945F-00C04FB984F9。
  4. 键入 dir j:\*.*,然后按 Enter
  5. 验证 I 驱动器的文件夹列表中是否列出了 USER 文件夹、MACHINE 文件夹和Gpt.ini文件。 如果缺少这些文件夹和文件中的任何一个,则网络上的计算机很可能在应用程序日志中记录 Userenv 错误。

如果 Sysvol 文件夹中缺少一个或多个组策略对象,请运行 Windows Server 2003 默认组策略还原实用工具(Dcgpofix.exe),或 Windows 2000 默认组策略还原工具(Recreatedefpol.exe)以重新创建默认组策略对象。

Windows Server 2003 中包括Dcgpofix.exe程序。 有关Dcgpofix.exe程序的其他信息,请在命令提示符处运行 dcgpofix /? 命令。

使用防病毒软件扫描 Sysvol 驱动器时,请确保设置建议的排除项。 使用防病毒软件进行扫描可能会阻止访问所需的文件,例如Gpt.ini文件。 必须为所有实时、计划和手动防病毒扫描配置这些排除项。

步骤 6:确保向所需组授予绕过遍历检查权限

必须向域控制器上的以下组授予绕过遍历检查权限:

  • 管理员
  • 经过身份验证的用户
  • 所有人
  • Pre-Windows 2000 Compatible Access

若要验证是否已在基于 Windows Server 2003 的域控制器上授予绕过遍历检查权限,请执行以下步骤:

  1. 选择“开始”,指向“管理工具”,然后选择“域控制器安全策略”。
  2. 展开 “本地策略”,然后选择“ 用户权限分配”。
  3. 双击“ 绕过遍历检查”。
  4. 单击以选中“ 定义这些策略设置 ”复选框。
  5. 验证此策略设置是否列出了管理员、经过身份验证的用户、每个人和 Windows 2000 兼容访问组。 如果缺少这些组中的任何一个,请执行以下步骤:
    1. 选择“添加用户或组”。
    2. 在“ 用户和组名称 ”框中,键入缺失组的名称,然后选择“ 确定”。
  6. 选择“确定关闭策略设置。
  7. 启动命令提示符。 为此,请选择“开始”,选择“运行,在“打开”框中键入 cmd,然后选择“确定”。
  8. 键入 gpupdate /force,然后按 Enter

若要验证是否已在基于 Windows 2000 Server 的域控制器上授予绕过遍历检查权限,请执行以下步骤:

  1. 依次选择“开始”、“程序”、“管理工具,然后选择“域控制器安全策略”。
  2. 展开 “安全设置”,展开 “本地策略”,然后选择“ 用户权限分配”。
  3. 双击“ 绕过遍历检查”。
  4. 单击以选中“ 定义这些策略设置 ”复选框。
  5. 验证此策略设置是否列出了管理员、经过身份验证的用户、每个人和 Windows 2000 兼容访问组。 如果缺少这些组中的任何一个,请执行以下步骤:
    1. 选择 添加
    2. 在“ 用户和组名称 ”框中,键入缺失组的名称,然后选择“ 确定”。
  6. 选择“确定关闭策略设置。
  7. 启动命令提示符。 为此,请选择“开始”,选择“运行,在“打开”框中键入 cmd,然后选择“确定”。
  8. 键入 secedit /refreshpolicy machine_policy /enforce,然后按 select。

步骤 7:确保域控制器未处于日记包装状态

若要查看域控制器是否处于日记包装状态,请在事件查看器中查看文件复制服务日志,并搜索 NTFRS 事件 ID 13568。 事件 ID 13568 类似于以下事件 ID:
如果 NTFRS 事件 ID 13568 记录在域控制器上,有关如何排查日记包装错误的详细信息,请参阅 如何在 Sysvol 和 DFS 副本集上排查journal_wrap错误。

步骤 8:运行 Dfsutil /PurgeMupCache 命令

使用 /PurgeMupCache 开关运行Dfsutil.exe程序以刷新本地 DFS/MUP 缓存的信息。 Dfsutil.exe计划包含在 Windows 2000 Server 支持工具和 Windows Server 2003 支持工具中。