解决 Windows 对等工作组中服务器消息块入站连接限制的问题

文章翻译 文章翻译
文章编号: 328459 - 查看本文应用于的产品
重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
展开全部 | 关闭全部

本文内容

症状

在对等工作组中,如果尝试连接到运行本文开头列出的任何产品的计算机的网络资源,则可能会收到下列错误消息之一:
Operating system error 71.

No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept.


System error 71 has occurred.

This remote computer has reached its connection limit, you cannot connect at this time.

原因

Windows 客户端工作站可能已打开了到打印服务器上或具有共享打印机的工作站上的命名管道 \PIPE\spoolss 的管道连接。在启动查询打印机的程序(如 Microsoft Word)或在“控制面板”中打开“打印机”文件夹时,通常发生这种情况。客户端和服务器上的打印机假脱机功能都将打开一个与此连接相关的句柄。
远程过程调用 (RPC) 要求每个活动的 RPC 调用(如 OpenPrinter)都有一个命名管道实例。如果 OpenPrinter 调用停止响应,RPC 会让命名管道连接保持打开状态。只有关闭了上下文句柄(即 OpenPrinters),RPC 才会断开此连接。

如果同时满足以下两个条件,则会打开一个永不关闭的匿名连接(又称空会话连接),连接到充当对等网络中服务器的工作站上的命名管道 \PIPE\spoolss:
  • 您的客户端已连接到充当“打印服务器”的计算机上的某台共享打印机。
  • 您已在一个或多个客户端上安装了一台本地共享打印机。

解决方案

可使用以下方法之一限制充当打印服务器的工作站上的空会话连接。首选第一种方法。

方法 1

使用组策略 GUI 或设置一个注册表项,可禁用已超过其传入连接限制的 Windows 计算机上的空会话连接,并显示其他一些空会话连接。

使用组策略用户界面(本地安全策略 MMC 管理单元)

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

    注意:如果因“管理工具”未出现在“程序”列表中而不能执行此步骤,请单击“开始”,指向“设置”,指向“控制面板”,双击“管理工具”,然后单击“本地安全策略”。

    注意:在 Windows XP 中,
    RestrictAnonymous
    子项的值可以为 0 或 1。值 1 可限制基于 Windows XP 的客户端上的空会话连接。为管理 SAM 帐户的枚举,添加了以下新的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\restrictanonymoussam
    可以通过“本地安全设置”到“安全设置\本地策略\安全选项\网络访问: 不允许 SAM 帐户的匿名枚举”下配置此策略。
  2. 在“安全设置”中,双击“本地策略”,然后单击“安全选项”。
  3. 双击“对匿名连接的额外限制”,然后在“本地策略设置:”下单击“没有显式匿名权限就无法访问”。
  4. 重新启动计算机。
此策略可限制空会话连接。

使用注册表编辑器

警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。

要限制空会话连接(或禁用空会话访问),请按照下列步骤操作:
  1. 启动注册表编辑器。
  2. 在注册表中找到并单击下面的项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA
  3. 在“编辑”菜单上,单击“添加数值”,然后添加以下注册表值:
    数值名称:RestrictAnonymous
    数据类型:REG_DWORD
    值:2
    默认值:0
    值为 2 可限制空会话连接。

    在设置 RestrictAnonymous 值时,可将该注册表项的值更改为 0 或 1(对于 Windows NT 4.0),或更改为 0、1 或 2(对于 Windows 2000)。这些数字对应于下列设置:
    • 0 无。依赖于默认许可权限。
    • 1 不允许枚举 SAM 帐户和名称。
    • 2 没有显式匿名权限就无法访问
  4. 重新启动计算机。

方法 2

使用以下方法可禁用会话空闲时间长而且已打开到命名管道 \PIPE\spoolss 的句柄的空会话连接。

删除客户端上的打印机共享

查找已启用了本地打印机共享的客户端(参见“更多信息”一节可了解其他信息)并删除这些计算机上的所有本地打印机共享:
  1. 打开“打印机”文件夹,检查是否已共享了一台本地打印机。
  2. 打开共享打印机的“属性”窗口,然后单击“共享”。
  3. 单击以选择“不共享”选项。

状态

Microsoft 已经确认这是在“适用于”一节中列出的 Microsoft 产品中存在的问题。

更多信息

对于运行 Windows NT Workstation 4.0、Windows 2000 Professional 和 Windows XP Professional 的计算机,最多许可进行 10 个并发客户端传入会话。对于运行 Windows XP Home Edition 的计算机,最多许可进行 5 个并发客户端传入会话。来自一台计算机的所有逻辑驱动器、逻辑打印机和传输层连接合在一起是一个会话。

当服务器服务打开的会话数已达到最大值时,如果又有一个用户试图分配资源,计算机将返回本文“症状”一节描述的错误消息。

通常,一台计算机不会与另一台计算机建立多个会话。但也有例外。例如,计算机 A 正在不同于登录用户的另一用户上下文中运行某一服务,此服务创建了一个到计算机 B 的逻辑连接。此逻辑连接可能源自文件共享、打印机、串行端口,也可能源自计算机之间使用命名管道和邮件槽进行的通信。

使用以下命令可获得有关会话和打开的文件及共享资源的信息。

关于运行服务器服务的计算机上的活动会话的信息

要查看关于运行服务器服务的计算机上的活动会话的信息,请键入以下命令:
net session
计算打开的会话数,看是否已达到会话限制数 10(对于 Windows XP Home Edition 则为 5)。通常,与每个远程客户端间只会建立一个会话。

如果来自某个远程客户端的会话多于一个,请查看已建立多个会话的远程客户端上的用户名上下文:
  • 查看正在运行的所有服务,看是否有某个服务正在会话表中显示的用户名的用户上下文中运行。
  • 查找符合以下条件的计划任务:正在登录脚本中运行;正在使用不同于登录用户的用户帐户。
  • 查找“用户名”列为空的行并检查空闲时间。
用户上下文为空的会话是空会话

临时空会话通常是由 IPC$ 连接在建立连接的第一步时创建的。它们保持活动状态的时间为 30 秒到 90 秒。

注意:要断开客户端计算机会话,请使用以下命令:
net session /delete \\computername
此命令可断开来自该计算机的所有会话并关闭所有打开的文件。如果在未进行保存的情况下关闭了打开的文件,则使用此命令会导致数据丢失。

关于打开文件的信息

要查看关于打开的文件的信息,请在运行服务器服务的计算机上键入以下命令:
net files
如果在会话表中看到永久为空的用户会话,请确定该空会话用户正在使用哪一个文件或管道。

关于 NetBIOS 连接表的信息

要查看传入和传出连接列表以及这些连接承载的通信量,请键入命令:
nbtstat -s

关于共享资源的信息

要查看文件共享、隐藏的管理共享和共享打印机,请键入以下命令:
net share
可能还需要进一步排查问题,才能确定出现多个客户端会话的原因。

使用网络监视器,可以确定发起额外的会话的是哪个组件以及服务器消息块 (SMB) 会话使用的是什么安全上下文。 要筛选打印机假脱机导致的通讯量,请使用网络监视器中的 R_WINSPOOL 分析程序。如果基于 Windows 的计算机查找充当“打印队列服务器”的计算机,则它会通过 RemAPI 协议(又称 Microsoft Windows Lanman 远程 API 协议)使用 NetShareEnum 事务。 默认情况下,在使用 NetShareEnum 事务时,只需匿名访问即可发出 NetServerEnum2 和 NetServerEnum3 请求。默认情况下,Windows 操作系统启用匿名访问。

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
122920 Windows 中的入站连接限制
132679 Windows NT 中的本地系统帐户和空会话
143474 限制用于匿名登录用户的信息
149522 系统错误 71 和许可证管理器
154541 客户端打开许多到 WinNT 打印服务器的 \Pipe\Spoolss 连接
156431 XFOR:从 MSDN Select CD 使用 NT 服务器时出现错误 71
179483 错误消息:“No more connections can be made at this time”(此时无法建立更多连接)
191611 多主浏览器的症状
246261 如何在 Windows 2000 中使用 RestrictAnonymous 注册表值
289655 如何在基于 Windows 2000 的计算机上启用空会话共享
302099 Windows 2000 客户端在将驱动器映射到单台服务器时使用多个连接
314882 Windows XP 中的入站连接限制

属性

文章编号: 328459 - 最后修改: 2006年4月20日 - 修订: 5.0
这篇文章中的信息适用于:
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows NT Workstation 4.0 开发员版
关键字:?
kbtshoot kbprb KB328459
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com