关于打印的 RPC 连接更新Windows 11更新22H2 后,无法共享打印问题,微软官方正式回应解决方法。

关于打印的 RPC 连接更新Windows 11更新22H2 后,无法共享打印问题,微软官方正式回应解决方法。

日期:2023-05-10 19:21:19

关于打印的 RPC 连接更新Windows 11的若干问题,微软官方正式回应解决方法。

由于微软官方在windows更新 22H2 后,改变了部分策略,导致大量共享出来的打印机无法正常打印。
 

适用于:Windows 11版本 22H2 及更高版本的 Windows

Windows 11版本 22H2 引入了对打印组件的更改,这些更改修改了 Windows 计算机在打印或打印相关操作期间相互通信方式。 例如,当您打印到打印服务器或网络上的另一台计算机共享的打印机时,更改将生效。 这些更改是为了进一步提高 Windows 中打印的整体安全性。 RPC 连接设置的默认配置强制使用更新且更安全的通信方法。 家庭用户和企业管理员还可以自定义其环境的设置。

更新详细信息

  • 对于打印相关的通信,默认情况下,TCP 上的 RPC 用于客户端 - 服务器通信。

    • 通过命名管道使用 RPC 在计算机之间打印相关通信仍可用,但默认情况下处于禁用状态。
    • 通过 TCP 使用 RPC 或通过命名管道使用 RPC 进行打印相关通信,可以通过组策略或注册表进行控制。
  • 默认情况下,客户端或服务器仅侦听通过 TCP 通过 RPC 传入的连接。

    • 可以将 Spooler 服务配置为通过 RPC 通过命名管道侦听传入连接。 这不是默认配置。
    • 此行为可以通过组策略或注册表进行控制。
  • 使用 TCP 上的 RPC 时,可以将特定端口配置为用于通信,而不是动态端口。

  • 所有计算机都加入域并支持 Kerberos 的环境现在可以强制实施 Kerberos 身份验证。

有关配置环境的建议

以下内容包含有关如何正确配置环境以避免或解决计算机间通信问题的建议。

允许通过 TCP 通信进行 RPC

最常见的问题是防火墙规则阻止计算机之间的通信。 若要解决防火墙问题,请执行以下步骤:

  1. 确保 RPC 终结点映射器端口 (135) 未被阻止。
  2. 在服务器上打开高范围临时端口 (49152 – 65535) ,或按照 配置 RPC 中的指南使用下面的某些端口 部分来指定 RPC 的端口范围。

有关不同端口及其通过系统服务使用的详细信息,请 参阅 Windows 的服务概述和网络端口要求

通过命名管道使用 RPC

不建议使用此配置。 但是,如果当前环境中的 RPC over TCP 不是一个选项,则可以使用它。

还可能需要以下附加配置才能在环境中通过命名管道正确支持 RPC。

将 RPC 配置为使用某些端口

请参阅 如何将 RPC 配置为使用某些端口,以及如何使用 IPsec 帮助保护这些端口

  • 若要设置动态/排除的端口范围,请运行 netsh int 命令。
  • 若要将 IPSec 与 netsh 配合使用,请运行 netsh ipsec 命令。
  • 若要使用 Windows 防火墙阻止一系列端口,请运行 netsh advfirewall 命令。

上述所有解决方案都是可行的解决方案。 但是,某些解决方案可能比需要为每个端口设置规则的解决方案更容易 (IPSec 和 AdvFirewall) 。 为了进行测试,可以使用动态/排除的端口范围方法,因为可以指定范围。 例如:

若要限制动态端口范围,请运行以下命令:

控制台
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv4 set dynamicportrange tcp startport=50000 numberofports=255
netsh int ipv4 set dynamicportrange udp startport=50000 numberofports=255
netsh int ipv6 set dynamicportrange tcp startport=50000 numberofports=255
netsh int ipv6 set dynamicportrange udp startport=50000 numberofports=255

然后,重新启动计算机。

 备注

255 是可以设置的最小端口数。

若要进一步限制端口范围,请运行以下命令:

控制台
netsh int ip show excludedportrange tcp
netsh int ip show excludedportrange udp
netsh int ipv4 add excludedportrange tcp startport=50000 numberofports=225
netsh int ipv4 add excludedportrange udp startport=50000 numberofports=225
netsh int ipv6 add excludedportrange tcp startport=50000 numberofports=225
netsh int ipv6 add excludedportrange udp startport=50000 numberofports=225

然后,重新启动计算机。

 备注

如果限制端口数过多,则系统上的服务将无法有效通信,并可能导致功能问题。

为 Windows 打印组件配置 RPC 通信

可以通过组策略或直接通过注册表配置以下设置,以达到所需的效果。 有关每个设置的特定详细信息,请参阅组策略编辑器中的文档。

通过命名管道使用 RPC 进行客户端 - 服务器通信

  • 使用组策略启用:
    路径: 计算机配置>管理模板>打印机>配置 RPC 连接设置
    启用并设置为 RpcOverNamedPipes
  • 使用注册表启用设置:
    运行 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcUseNamedPipeProtocol /t REG_DWORD /d 1 /f

通过命名管道在 RPC 上启用侦听传入连接

  • 通过组策略启用:
    路径:计算机配置 > 管理模板 > 打印机 > 配置 RPC 侦听器设置
    启用并设置允许用于 RpcOverNamedPipesAndTcp 的协议。
  • 通过注册表启用设置:
    运行 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcProtocols /t REG_DWORD /d 0x7 /f

通过 TCP 通信使用 RPC 的特定端口

  • 通过组策略启用:
    路径: 计算机配置>管理模板>打印机>通过 TCP 端口 启用和设置端口号配置 RPC
  • 通过注册表启用设置
    运行 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcTcpPort /t REG_DWORD /d <port number> /f

最大端口:65535

强制执行 Kerberos 身份验证

  • 通过组策略启用:
    路径: 计算机配置>管理模板>打印机>配置 RPC 侦听器设置
    启用和设置允许用于 Kerberos 的身份验证协议。
  • 通过注册表启用设置
    运行 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v ForceKerberosForRpc /t REG_DWORD /d 1 /f
版权所有
[!--temp.prenext--]
[!--temp.tuijian--]