无法在域控制器上打开文件共享或组策略管理单元

本文介绍如何解决域控制器上为工作站或服务器服务禁用 SMB 签名时发生的问题。

适用于: Windows Server 2003
原始 KB 数: 839499

总结

无法在 Windows Server 2003 域控制器或 Windows 2000 Server 域控制器上打开文件共享或组策略管理单元。 在本地登录到域控制器,然后尝试在域控制器上打开共享时,会收到重复的密码提示,并且无法打开共享。 可以通过更改注册表来解决此问题。

警告

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

现象

方案 1 - 对域控制器上的工作站服务禁用服务器消息块(SMB)签名,但同一域控制器上的服务器服务需要 SMB 签名

Windows Server 2003

尝试在域控制器上打开组策略管理单元时,会收到如下所示的错误消息:

您没有执行此操作的权限。 拒绝访问。

域控制器每隔五分钟在应用程序事件日志中记录以下事件:

Windows 2000 Server

尝试在域控制器上打开组策略管理单元时,会收到如下所示的错误消息:

您没有执行此操作的权限。

拒绝访问。 域控制器在应用程序事件日志中记录以下事件:

在本地登录到域控制器,然后尝试在域控制器上打开共享时,会收到重复的密码提示,并且无法打开共享。

方案 2 - 为域控制器上的服务器服务禁用 SMB 签名,但同一域控制器上的工作站服务需要 SMB 签名

Windows Server 2003

无法打开组策略对象。 你可能没有适当的权限。

该帐户无权从此工作站登录。

在网络跟踪中,如果在客户端上启用和需要 SMB 签名并且已在服务器上禁用,则与 TCP 会话的连接在方言协商后正常关闭,并且客户端收到以下错误:

1240 (ERROR_LOGIN_WKSTA_RESTRICTION)

域控制器每隔五分钟在应用程序事件日志中记录以下事件:在本地登录到域控制器,然后尝试在域控制器上打开文件共享时,会收到如下所示的错误消息:

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

该帐户无权从此工作站登录。

注意

在网络跟踪中,如果启用了 SMB 签名,并且客户端需要 SMB 签名并在服务器上禁用,则与 TCP 会话的连接会在方言协商后正常关闭。 此外,客户端会收到以下错误消息:1240(ERROR_LOGIN_WKSTA_RESTRICTION)

Windows 2000 Server

尝试在域控制器上打开组策略管理单元时,会收到类似于以下内容的错误消息:

无法打开组策略对象。 你可能没有适当的权限。

该帐户无权从此工作站登录。

域控制器在应用程序事件日志中记录以下事件:在本地登录到域控制器,然后尝试在域控制器上打开文件共享时,会收到类似于以下内容的错误消息:

\\无法访问Server_Name\Share_Name。

该帐户无权从此工作站登录。

注意

在网络跟踪中,如果启用了 SMB 签名,并且客户端需要 SMB 签名并在服务器上禁用,则与 TCP 会话的连接会在方言协商后正常关闭。 此外,客户端会收到以下错误消息:1240(ERROR_LOGIN_WKSTA_RESTRICTION)

解决方法

若要解决此行为,请执行以下步骤:

重要

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

步骤 1 - 更改注册表

更改 enablesecuritysignature 注册表项的值。 为此,请按照下列步骤进行操作:

  1. 在域控制器上,单击“开始,然后单击“运行”。

  2. 复制并粘贴(或键入)“打开”框中的 regedit 命令,然后按 Enter。

    “运行”窗口的屏幕截图,其中在“打开”框中键入了 regedit。

  3. 找到并单击以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters

  4. 在右窗格中,双击 enablesecuritysignature,在 “值”数据 框中键入 1,然后单击“ 确定”。

  5. 双击 requiresecuritysignature,在 “值”数据 框中键入 1,然后单击“ 确定”。

  6. 找到并单击以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters

  7. 在右窗格中,双击 enablesecuritysignature,在 “值”数据 框中键入 1,然后单击“ 确定”。

  8. 双击 requiresecuritysignature,在 “值”数据 框中键入 0,然后单击“ 确定”。

步骤 2 - 在更改注册表值后重启服务器服务和工作站服务,重启服务器服务和工作站服务。

重要

请勿重启域控制器,因为此操作可能会导致组策略将注册表值更改回以前的值。

若要重启服务器服务和工作站服务,请执行以下步骤:

  1. 单击“开始,指向“管理工具”,然后单击“服务”。

  2. 右键单击“服务器,然后单击“重启”。

    “服务”窗口的屏幕截图,其中选择了“服务器”,以及“重启”菜单。

  3. 右键单击“工作站,然后单击“重启”。

注意

如果系统提示你重启其他服务,请单击“是”

步骤 3 - 更新 Sysvol 共享

更新域控制器的 Sysvol 共享。 为此,请按照下列步骤进行操作:

  1. 打开域控制器的 Sysvol 共享。 为此,请单击“开始”,单击“运行”,在“打开框中键入 \\Server_Name\Sysvol,然后按 Enter。
  2. 如果 Sysvol 共享未打开,请重复步骤 1 - 更改注册表和步骤 2 - 重启服务器和工作站服务。
  3. 重复步骤 1 - 更改注册表和步骤 2 - 在每个受影响的域控制器上重启服务器和工作站服务,以确保每个域控制器可以访问自己的 Sysvol 共享。

步骤 4 - 设置 SMB 策略设置

连接到每个域控制器上的 Sysvol 共享后,打开域控制器安全策略管理单元,然后设置 SMB 签名策略设置。 为此,请按照下列步骤进行操作:

  1. 单击“开始”,指向程序”,指向“管理工具”,然后单击“域控制器安全策略”。

  2. 在左窗格中,展开 “本地策略”,然后单击“ 安全选项”。

  3. 在右窗格中,双击Microsoft网络服务器:对通信进行数字签名(始终)。

    注意

    在 Windows 2000 Server 中,等效的策略设置是数字签名服务器通信(始终)。

    重要

    如果网络上有不支持 SMB 签名的客户端计算机,则不得启用 Microsoft网络服务器:数字签名通信(始终) 策略设置。 如果启用此设置,则必须对所有客户端通信具有 SMB 签名,并且不支持 SMB 签名的客户端计算机将无法连接到其他计算机。 例如,运行 Apple Macintosh OS X 或 Microsoft Windows 95 的客户端不支持 SMB 签名。 如果网络包含不支持 SMB 签名的客户端,请将此策略设置为禁用。

    “默认域控制器安全设置”窗口的屏幕截图,其中选择了“安全选项”。

  4. 单击以选中“定义此策略设置”复选框,单击“已启用,然后单击“确定”。

    Microsoft网络服务器窗口的屏幕截图,其中已选中并启用“定义此策略设置”。

  5. 双击Microsoft网络服务器:数字签名通信(如果客户端同意)。

    注意

    对于 Windows 2000 Server,等效的策略设置是数字签名服务器通信(如果可能)。

  6. 单击以选中“ 定义此策略设置 ”复选框,然后单击“ 已启用”。

  7. 单击“确定”。

  8. 双击 Microsoft网络客户端:对通信进行数字签名(始终)。

  9. 单击此项可清除 “定义此策略设置 ”复选框,然后单击“ 确定”。

    “Microsoft网络服务器”窗口的屏幕截图,其中清除了“定义此策略设置”复选框。

  10. 双击Microsoft网络客户端:数字签名通信(如果服务器同意)。

  11. 单击此项可清除 “定义此策略设置 ”复选框,然后单击“ 确定”。

步骤 5 - 运行组策略更新实用工具

使用强制开关运行组策略更新实用工具(Gpupdate.exe)。 为此,请按照下列步骤进行操作:

  1. 单击“开始”,然后单击“运行”

  2. 复制并粘贴(或键入)“打开”框中的 cmd 命令,然后按 Enter。

    在“打开”框中键入 cmd 的“运行”窗口的屏幕截图。

  3. 在命令提示符处,键入 gpupdate /force,然后按 Enter。

    注意

    Windows 2000 Server 中不存在组策略更新实用工具。 在 Windows 2000 Server 中,等效命令是 secedit /refreshpolicy machine_policy /enforce

步骤 6 - 检查应用程序事件日志

运行组策略更新实用工具后,请检查应用程序事件日志以确保组策略设置已成功更新。 成功更新组策略后,域控制器会记录事件 ID 1704。 若要在事件查看器中打开应用程序日志,请执行以下步骤:

  1. 单击“开始”,指向“管理工具”,然后单击事件查看器

  2. 在左窗格中单击“应用程序”

    “事件查看器”窗口的屏幕截图,其中选择了“应用程序”。

  3. 双击事件 ID 1704 并确认已成功应用组策略设置。

    注意

    事件的源为 SceCli。

    事件 ID 1704 的事件属性窗口的屏幕截图。

步骤 7 - 检查注册表值

检查在步骤 1 中更改的注册表值 - 更改注册表以确保注册表值未更改。

注意

此步骤确保不会在另一个组或组织单位(OU)级别应用冲突的策略设置。 例如,如果Microsoft网络客户端:数字签名通信(如果服务器同意)策略在域控制器安全策略中配置为“未定义”,但此策略在域安全策略中配置为已禁用,则会为工作站服务禁用 SMB 签名。

步骤 8 - 使用策略结果集 (RSoP) 管理单元检查 SMB 签名策略设置

如果在运行组策略更新实用工具后注册表值已更改,请使用 Windows Server 2003 中的 RSoP 管理单元检查 SMB 签名策略设置。 为此,请按照下列步骤进行操作:

  1. 单击“开始”,单击“运行,在“打开”框中键入 rsop.msc,然后单击“确定”。

    在“打开”框中键入 rsop.msc 的“运行”窗口的屏幕截图。

  2. 在 RSoP 管理单元中,SMB 签名设置位于以下路径中: 计算机配置/Windows 设置/安全设置/本地策略/安全选项

    注意

    如果运行的是 Windows 2000 Server,请从 Windows 2000 服务器资源工具包安装组策略更新实用工具,然后在命令提示符处键入以下内容: gpresult /scope computer /v

  3. 运行此命令后, 将显示“已应用组策略对象” 列表。 此列表显示应用于计算机帐户的所有组策略对象。 检查所有这些组策略对象的 SMB 签名策略设置。

其他资源

如果工作站服务的 SMB 签名设置和服务器服务的 SMB 签名设置相互矛盾,则会发生此行为。 以这种方式配置域控制器时,域控制器上的工作站服务无法连接到域控制器的 Sysvol 共享。 因此,无法启动组策略管理单元。此外,如果 SMB 签名策略由默认域控制器安全策略设置,则问题会影响网络上的所有域控制器。 因此,Active Directory 目录服务中的组策略复制将失败,你将无法编辑组策略以撤消这些设置。

方案 1 - 如果运行域控制器诊断工具(DcDiag.exe),则会收到与 Windows 2000 Server 和 Windows Server 2003 类似的错误

启动测试:MachineAccount
无法打开具有 [SERVERNAME]:失败的管道 5:拒绝访问。
无法获取 NetBIOSDomainName
失败无法测试主机 SPN
失败无法测试主机 SPN
* 缺少 SPN :(null)
* 缺少 SPN :(null)
.........................SERVERNAME 测试 MachineAccount 失败
正在启动测试:服务
无法打开远程 ipc 到 [SERVERNAME]:失败并显示 5:拒绝访问。
.........................SERVERNAME 测试服务失败
开始测试:ObjectsReplicated
.........................SERVERNAME 传递的测试 ObjectsReplicated
开始测试:frssysvol
[SERVERNAME]Net use 或 LsaPolicy 操作失败,错误 5,拒绝 Access。
.........................SERVERNAME 测试 frssysvol 失败
开始测试:frsevent
.........................SERVERNAME 测试 frsevent 失败
开始测试:kccevent
未能枚举事件日志记录,错误访问被拒绝。
.........................SERVERNAME 测试 kccevent 失败
启动测试:systemlog
未能枚举事件日志记录,错误访问被拒绝。
.........................SERVERNAME 测试系统日志失败

方案 2 - 如果运行域控制器诊断工具,则会收到与 Windows 2000 Server 和 Windows Server 2003 类似的错误

测试服务器:Default-First-Site-Name\SERVERNAME
开始测试:复制
.........................SERVERNAME 通过的测试复制
开始测试:NCSecDesc
.........................SERVERNAME 通过测试 NCSecDesc
开始测试:NetLogons
[SERVERNAME]Net use 或 LsaPolicy 操作失败,错误 1240,该帐户无权从此工作站登录。
.........................SERVERNAME 测试 NetLogons 失败
开始测试:广告
.........................SERVERNAME 通过的测试广告
开始测试:KnowsOfRoleHolders
.........................SERVERNAME 通过的测试 KnowsOfRoleHolders
开始测试:RidManager
.........................SERVERNAME 通过的测试 RidManager
启动测试:MachineAccount
无法使用 [SERVERNAME]:失败的管道 1240:帐户无权从此工作站登录。
无法获取 NetBIOSDomainName
失败无法测试主机 SPN
失败无法测试主机 SPN
* 缺少 SPN :(null)
* 缺少 SPN :(null)
.........................SERVERNAME 测试 MachineAccount 失败
正在启动测试:服务
无法打开远程 ipc 到 [SERVERNAME]:失败并显示 1240:帐户无权从此工作站登录。
.........................SERVERNAME 测试服务失败
开始测试:ObjectsReplicated
.........................SERVERNAME 传递的测试 ObjectsReplicated
开始测试:frssysvol
[SERVERNAME]Net use 或 LsaPolicy 操作失败,错误 1240,该帐户无权从此工作站登录。
.........................SERVERNAME 测试 frssysvol 失败
开始测试:frsevent
.........................SERVERNAME 测试 frsevent 失败
开始测试:kccevent
未能枚举事件日志记录,错误 帐户无权从此工作站登录。 .........................SERVERNAME 测试 kccevent 失败
启动测试:systemlog
未能枚举事件日志记录,错误 帐户无权从此工作站登录。 .........................SERVERNAME 测试系统日志失败