Windows共享打印机故障排查:错误代码0x000011b到771实战指南 1. 共享打印机连不上的报错地图先搞清楚该修哪一端干了这么多年企业网络维护我修得最多的问题大概就是“共享打印机突然连不上了”。Windows 10 用户尤其容易撞上而且往往是在一次系统更新之后全办公室的人同时开始报错。共享打印机的报错五花八门从 0x000011b、0x00000709、0x00000040 到 0x00000520再到 771、找不到网络路径、提示系统不支持请求的指令……很多人拿到一个错误码就懵了到处找工具结果越修越乱。这篇文章我就把在 Windows 10 下处理共享打印机连接故障的经验系统性地理一遍。为了方便不同基础的读者我先把整条链路拆开看一台客户端要成功使用另一台机器共享出来的打印机中间要经过至少四个环节。第一层是网络发现与会话层客户端要通过 SMB服务器消息块协议访问主机对应问题包括“找不到网络路径”“没有权限”“登录失败”第二层是后台打印服务层也就是 Print Spooler它一停后面全部白搭第三层是驱动与 RPC 调用层客户端把自己的打印作业交出去时需要调用主机上的打印驱动最容易出问题的 0x000011b、0x00000709 都发生在这里第四层是打印端口与数据格式层作业从主机转发到物理打印机时如果端口监视器坏了就会出现 771 这类错误。所以遇到报错我的习惯是先让用户在主机上打一张测试页。如果主机也打不了那是主机到打印机的问题跟共享无关别瞎折腾客户端如果主机打印正常再怀疑客户端到主机的这条链路。这个顺序看起来很简单但我见过太多人一上来就重装驱动重装三次之后才发现主机端压根没开共享。下面是按错误码对号入座的速查表后文每一类都会展开讲。错误提示典型场景第一排查方向0x000011b补丁更新后主机打印正常客户端连接报错打印后台 RPC 兼容开关、补丁0x00000709客户端添加共享打印机时提示无法连接Spooler 服务、驱动残留、默认打印机0x00000520Win11 连 Win7 共享打印机凭据与登录会话0x00000006连接共享时打印服务中断服务状态、会话稳定性0x00000012打印作业发送失败驱动与数据格式0x00000040安装打印驱动时失败驱动架构、管理员权限771网络打印机端口不工作WSD / TCP-IP 端口监视器这张表不是让你死记而是帮你判断动手方向。下面几章我按“最常见”——“次常见”——“混合环境”——“跨系统环境”的顺序展开每一条都会有具体的修复路径和原理说明。2. 0x000011b安全补丁引发的头号共享打印机故障2.1 为什么一个“安全更新”会把共享打印机搞挂如果你是在 2021 年 9 月之后突然开始遇到 0x000011b那基本不用怀疑是 Windows 的月度安全更新改动了打印后台处理程序Print Spooler的 RPC 调用方式。微软为了修复 PrintNightmare 这类高危漏洞在补丁里把 RPC 调用的身份验证级别强制拉高了在域环境里有配套组策略可以协调但在普通工作组、家庭网络、或者没做策略下发的环境里老客户端仍然用旧的方式调用直接被拒之门外。这个错误的典型表现是主机上打印正常其他电脑打开共享打印机时报“操作失败错误为 0x000011b”。很多网管第一反应是重装驱动但驱动没问题问题是协议不匹配。如果你在日志里看到“RPC 服务器不可用”“操作失败为 0x000011b”这些字眼基本就是这个原因。2.2 首选解法注册表打开 RPC 隐私等级兼容开关修复 0x000011b 最干净、影响最小的办法是加一个注册表兼容开关而不是卸载补丁。这个开关是微软留给系统管理员在非域环境下使用的等于告诉打印后台处理程序“对 RPC 调用的隐私保护要求可以协商不强制”。操作步骤如下在主机或客户端上按下 Win R输入regedit打开注册表编辑器。定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print。在右侧空白处右键新建一个 DWORD32 位值命名为RpcAuthnLevelPrivacyEnabled。将数值数据设为0基数选择十六进制点击确定。关闭注册表编辑器重启 Print Spooler 服务或者直接重启电脑。重启 Print Spooler 的命令是net stop spooler net start spooler这条命令需要以管理员身份运行。设置完这个键之后0x000011b 在绝大多数情况下都会消失。我解释一下原理RpcAuthnLevelPrivacyEnabled这个键设为 0表示关闭 RPC 隐私等级强制设为 1表示重新强制启用。PrintNightmare 补丁本身没有提供“彻底关闭”的组策略选项这个注册表键就是官方的后门兼容开关。它不牺牲补丁对 PrintNightmare 的防护能力只是把 RPC 调用从“必须隐私加密”降级为“可协商”所以比卸载补丁稳妥得多。2.3 备选方案卸载补丁和 IP 直连兜底如果你连注册表都不想动或者正处在一个不能马上重启的环境里可以考虑卸载 2021 年 9 月前后的打印相关更新需要重点关注的补丁包括 KB5005565、KB5005573、KB5005568、KB5005033、KB5005574 等。卸载路径设置 → Windows 更新 → 更新历史记录 → 卸载更新在列表里找到对应补丁右键卸载重启后测试。但我不建议长期这么做系统更新会自动重新安装这些补丁几天后故障可能再次出现办公室又要炸一次锅。另一个兜底思路是绕过共享打印改用 IP 直连。比如惠普 M126 这类带网口的设备直接在客户端添加“使用 TCP/IP 地址端口的打印机”把端口填成打印机自己的 IP不走 Windows 共享。这样虽然放弃了驱动集中分发的便利但至少能立刻恢复办公。2.4 “打印机共享修复工具”到底修的是什么热词里提到的“打印机共享修复工具”“NT6 打印机共享修复工具”本质上干的事就是把我在上面写的注册表键值加上去顺便把 Spooler 服务设为自动、启动防火墙里文件和打印机共享相关的规则、给 Everyone 加上打印权限。这些操作你手动做也完全可以释放权掌握在自己手里还可以避免下载到来源不明的工具。这类工具的核心价值在于快速批量修复但如果你只有一台电脑出问题手工操作不超过三分钟。3. 0x00000709 与“第二层坑”客户端打印服务与驱动残留3.1 0x00000709 的报错场景和常见误判0x00000709 是另一个高频错误报错文本通常是“Windows 无法连接到打印机。操作失败错误为 0x00000709。”出现这个错误时可能是因为客户端机器的 Print Spooler 服务本身状态不对也可能是本机已有同名打印机残留甚至是“默认打印机”的注册表项被写坏了。和 0x000011b 一对比区别很明显0x000011b 多半出现在系统更新之后而 0x00000709 更多出现在安装过多个打印机驱动、删过打印机、或者用 Ghost/精简版系统的电脑上。如果用户之前装过厂商的“全家桶”驱动卸载时又没卸干净后台打印机列表里残留了一个虚拟打印机条目连共享时就会直接撞车。3.2 从服务到队列的清理顺序修复 0x00000709 我建议按下面的顺序来不要上来就删驱动按 Win R 输入services.msc找到 Print Spooler确认它处于“正在运行”状态。如果停了右键启动如果反复停检查依赖服务比如“RPC Endpoint Mapper”是否正常。打开资源管理器进入C:\Windows\System32\spool\PRINTERS把里面残留的.spl和.shd文件全部删掉。这些是没发出去的打印任务缓存积压多了会阻塞新连接。打开“设置 → 设备 → 打印机和扫描仪”把所有已经断开、带黄色感叹号、或者名字后面带“副本”字样的打印机全部移除。打开“控制面板 → 程序和功能”卸载掉以前装过的打印机驱动套件然后重新下载安装最新版驱动。做完这四步大部分 0x00000709 都能解决。还有一个容易被忽略的点如果主机端开启共享的打印机名字里带了空格或者特殊字符比如“HP LaserJet M126 MFP”某些老版本的客户端程序在解析共享路径时会出问题。你可以去主机端的“打印机属性 → 共享选项卡”里把共享名改成一个不带空格的简短名字比如HP-M126然后客户端按新共享名重新连接。3.3 32 位客户端连 64 位主机驱动架构不匹配这是我在实际维护中遇到最多、但很多新手完全没概念的问题。主机的 Windows 是 64 位客户端是 32 位比如某些老笔记本或者精简测试机客户端连接共享打印机时会尝试从主机上拉取驱动。如果主机端只安装了 x64 驱动32 位客户端就会连接失败。解决办法在主机端“打印机属性 → 共享 → 其他驱动程序”里勾选 x8632 位驱动然后插入驱动光盘或指定驱动安装包路径让系统补上。反过来也一样32 位主机要服务 64 位客户端就勾选 x64。这个细节一般在大型企业域环境里由部署工具处理好了但小办公室、家庭局域网里经常被忽略。遇到 0x00000709先看一眼客户端和主机的系统架构是不是一样的能少走很多弯路。3.4 注册表直接指定默认打印机的做法有时候报 0x00000709 是因为系统在“设置默认打印机”这一步失败客户端把默认打印机指到了一个已经失效的网络路径上。这个失效路径会写在注册表里HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows右侧有一个名为Device的字符串值它保存了当前用户默认打印机的名称、驱动和端口。正常格式是HP LaserJet M126 MFP,winspool,Ne00:如果你在Device里看到一个指向已经不存在共享路径的打印机直接双击它把它改成当前可用打印机的名称、驱动、端口格式然后保存退出再重启一下 Print Spooler。这个方法对“默认打印机每次开机都跳回旧设备”这种问题非常管用。4. Windows 版本混用才是重灾区Win7/Win10/Win11 互相连接的坑4.1 新版系统连老主机的 SMB 1.0 开关电脑不是一个朝代换齐的办公室里既有 Win10、Win11也有 Win7甚至还有老旧的 XP 时代打印机。不同 Windows 版本混用时最先出问题的往往不是打印机驱动而是 SMB 协议。Windows 10 和 Windows 11 默认禁用 SMB 1.0而 Win7 默认还带着 SMB 1.0。如果你用 Win10 或 Win11 去连接一台 Win7 共享的打印机连接不上是很正常的事因为两台机器之间在协议协商阶段就谈不拢。热词里那个“win11 连接 win7 共享打印机”“win10 是主机 win7 是客户机”都是这个场景。解决办法在 Win10/Win11 上把 SMB 1.0 功能打开。路径是“控制面板 → 程序 → 启用或关闭 Windows 功能”往下拉找到“SMB 1.0/CIFS 文件共享支持”勾选“SMB 1.0/CIFS 客户端”和“SMB 1.0/CIFS 服务器”确定后重启。也可以管理员身份运行 PowerShellEnable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -All需要提醒的是SMB 1.0 是一个很老的协议存在已知安全风险只建议在必须兼容旧设备的局域网内部使用不要在公网或者不可信网络环境里开启。4.2 凭据管理器与 0x00000520 登录会话错误0x00000520 这个错误码在 Win11 连 Win7、或者两台机器不在同一个工作组时很常见。它的本质是登录会话问题客户端尝试用的账户在主机上没有建立有效会话。这时候你大概率会在弹窗里看到“输入网络凭据”但输入了正确密码还是报错。排查路径如下在“控制面板 → 用户账户 → 凭据管理器 → Windows 凭据”里点击“添加 Windows 凭据”。输入主机 IP 或计算机名用户名填主机上的一个本地账户比如DESKTOP-ABC\zhangshan密码填对应密码点击确定。回到打印机连接窗口用\\192.168.x.x\打印机共享名方式重新连接。如果你要连的主机是在工作组模式下尽量不要用“Guest”或“Everyone”去访问尤其不要在两台机器都开着“仅来宾”模式的情况下去猜。共享打印机本质上也是共享文件夹的一种主机必须有可用的账户否则即使你能看到共享名点击时也会被拒。4.3 “拒绝从网络访问这台计算机”与 Guest 权限还有一个和权限相关的隐蔽坑Windows 10/11 的本地安全策略里“拒绝从网络访问这台计算机”这个策略默认包含了 Guest 账户。很多办公室的共享打印机设置了“Everyone 打印”但 Everyone 最终映射为 Guest 身份访问时直接就被策略拦掉了。报错可能不是 0x00000520而是“拒绝访问”“找不到网络路径”。修改方法在主机上按 Win R 输入secpol.msc打开本地安全策略。依次展开“本地策略 → 用户权限分配”。右侧找到“拒绝从网络访问这台计算机”双击打开把里面的 Guest 账户移除。同时在“从网络访问此计算机”里确认 Guest 或 Users 在里面。然后到打印机的“打印机属性 → 安全”选项卡给 Everyone 分配“打印”权限。做完这两步很多莫名其妙的“无法连接”都会消失。4.4 0x00000006、0x00000012、0x00000040 的处理思路这三个错误不像前面几个那么常见但热词里反复出现我也简单说一下处理思路。0x00000006 是“无效句柄”在共享打印机场景里往往意味着客户端和主机之间的 SMB 会话被中断了比如主机睡眠、网络波动、Spooler 崩溃。处理方式比较朴素主机和客户端都重启一遍 Print Spooler然后把卡在队列里的任务清掉重新连接。0x00000012 是“没有更多文件”常见于打印作业传输过程中数据格式被截断。优先检查驱动版本是否一致特别是 32 位和 64 位混用时其次把打印机驱动换成最新的 WHQL 版本别用精简系统自带的“Microsoft 打印到 PDF”这类虚拟驱动去连共享。0x00000040 出现在“添加打印机”或“安装打印机驱动”过程中多和管理员权限相关。右键点击安装程序选择“以管理员身份运行”如果你是在主机端添加“其他驱动程序”也要注意当前用户是否有管理员权限。精简版系统用户遇到 0x00000040 的概率更大因为这些系统阉割了一些打印组件驱动安装服务注册不上。5. 惠普 M126 这类一体机的共享陷阱端口、WSD 和双向支持5.1 一体机共享中“一条 USB 线”引发的连锁反应惠普 M126 系列是办公室里非常常见的一体机它有一个特点很多公司买回来只用 USB 线接一台主机然后主机开启共享。这种连接方式本身没问题但问题往往出在驱动软件的设置上。惠普这类一体机自带的安装程序默认会搜索网络中的打印机一旦它发现打印机有 WSD 端口就会自动创建一堆“网络发现”设备用户在添加打印机时很容易选错选到 WSD 端口设备而不是共享打印机。WSD 这类端口的问题在于它在后台 Print Spooler 服务重启之后经常无法自动恢复设备连接打印任务会一直挂在队列里显示“正在打印”或者“错误”。这就是为什么很多人重装了驱动、设置了共享还是打不出来——因为客户端连的根本不是共享打印机而是 WSD 端口下的一个“幽灵设备”。5.2 客户端添加 M126 共享打印机的正确路径正确做法是客户端不要用“添加打印机向导”去自动搜索直接手动添加。在主机端记录打印机共享名推荐修改成一个不带空格的简短短名比如HP-M126。客户端按 Win R输入\\主机IP回车能访问到主机共享资源的话说明网络链路没问题。右键其中的打印机选择“连接”或者通过“设置 → 设备 → 打印机和扫描仪 → 添加打印机”选择“我需要的打印机不在列表中”选择“按名称选择共享打印机”输入\\192.168.1.100\HP-M126。如果弹出驱动安装提示选择安装等待完成后打印测试页。如果提示找不到网络路径第一步先确认主机 IP 是否能通客户端和主机是否在同一网段第二步用 IP 替换计算机名因为 NetBIOS 名称解析偶尔会坑人。5.3 端口监视器故障与“771”的处理热词里出现的“连接共享打印机报错 771”在很多情况下和 WSD 端口监视器有关。如果你在打印机属性里看到端口一栏写的是 WSD-xxx而打印任务又频繁失败我建议把端口改掉或者干脆换一条路。如果打印机本身有网络接口千兆或者百兆都行可以手动添加一个标准 TCP/IP 端口打印机属性 → 端口 → 添加端口。选择“Standard TCP/IP Port”点“新端口”。输入打印机的 IP 地址取消勾选“查询打印机并自动选择驱动程序”下一步完成。端口类型选择“原始(Raw)”协议选 Raw端口号填 9100勾不勾“启用双向支持”看情况通常取消勾选更稳定。换到 TCP/IP 端口之后客户端其实就可以不用共享了直接添加一个“使用现有端口”的打印机实例选择对应驱动即可。遇到 771 的报错时这种“干掉 WSD改走 9100”的方式我试下来成功率非常高。另外要提醒一下 M126 的一个常见隐藏坑安装惠普驱动时尽量只装“打印机驱动”基础组件不要顺手装 HP Smart、HP 更新器、HP 程序保护这些常驻软件。它们在后台会干扰共享打印机的枚举和连接尤其在主机上装了之后客户端连接时偶尔会触发“无法检测设备”的弹窗。6. Windows 与银河麒麟混用跨系统共享打印机的“卡纸”排查6.1 Windows 侧的基础配置与 SMB 可见性检查现在不少办公室的桌面环境是 Windows 和银河麒麟混用的。打印机挂在 Windows 10 主机上麒麟工作站在网络里要添加这台共享打印机报错形态和 Windows 之间互相连很不一样。最常见的情况是麒麟端“添加打印机”时能看到共享名连接后状态显示“正在打印”但打印机就是不出纸或者打印队列日志里提示“Unable to get printer status”。先把 Windows 侧的基础配置检查一遍主机关闭密码保护共享或者在网络共享中心里临时开放“来宾共享”。防火墙的“文件和打印机共享”规则必须放行TCP 445、TCP 139、UDP 137/138。打印机共享设置里给 Everyone 或者 Guest 勾选“打印”权限。确认主机能正常打印测试页再用其他 Windows 机器测一次共享排除 Windows 侧本身的问题。在这之后再用麒麟机器去验证。如果你在 Windows 主机上能看到共享名但麒麟这边连不上优先考虑 SMB 协议和账户认证问题而不是打印机本身。6.2 麒麟端添加打印机的两种方式麒麟 V10 是基于 Linux 内核的桌面系统添加共享打印机通常有两种方式。图形界面方式打开“设置 → 打印机”或者运行system-config-printer。点击“添加打印机”选择“网络打印机”。输入smb://Windows主机IP/共享名例如smb://192.168.1.100/HP-M126。系统会弹出认证窗口输入 Windows 主机上允许访问的账户和密码。如果系统识别到打印机会列出对应的驱动。没有自动识别时手动选择一个通用驱动比如 Generic PCL 6 或 Generic PostScript然后应用。命令行方式smbclient -L //192.168.1.100 -U zhangshan这条命令用账户zhangshan查看主机上共享的资源列表能看到打印机共享名说明 SMB 层是通的。如果提示NT_STATUS_ACCESS_DENIED说明账户或权限有问题如果提示NT_STATUS_CONNECTION_REFUSED先检查 Windows 防火墙。6.3 显示“正在打印”但不出纸的三大根因我在麒麟环境里处理这个问题比较多总结下来“正在打印”但不出纸主要有三个原因。第一个原因是 Windows 主机端账户权限回收。很多主机策略会在一定时间内强制注销空闲会话麒麟端的打印作业进到 Windows 队列后等主机恢复会话时作业已经丢失了。解决办法是给麒麟端配置一个专用账户并保持密码不过期不要用 GuestGuest 会话被回收得更快。第二个原因是麒麟端驱动不匹配。打印机挂在 Windows 上驱动是 Windows 驱动Linux 端发送数据时要经过 Samba/CUPS 转换。如果打印机本身只支持 PCL 5 或 PCL 6而你在麒麟端选的是 PostScript 驱动打印作业会把 PostScript 指令直接推给打印机结果就是打印机收到一堆看不懂的代码表现为“正在打印”但是没有纸张动作。处理方式是优先选择打印机同品牌同型号的 Linux 驱动或者选择打印机支持的 PCL 语言通用驱动。第三个原因是 Windows 主机端共享名里有特殊字符。麒麟的 smb 地址解析对空格和长共享名比较敏感建议把共享名改成简短无空格的格式比如HP-M126再用smb://主机IP/HP-M126方式连接。6.4 适合跨系统场景的驱动选择PCL 还是 PostScript在跨系统共享打印机的场景里驱动选择直接决定能不能出纸。惠普 M126 这类低端一体机通常原生支持 PCL 和部分 PostScript 仿真在麒麟端最稳妥的做法是如果麒麟仓库里有惠普官方 Linux 驱动包比如 hplip优先安装匹配型号的驱动没有官方驱动时选择“Generic PCL 6/5”通用驱动绝大多数激光一体机能认尽量避免使用 PostScript 通用驱动除非打印机本身明确标注“原生 PostScript”如果打印机打印出来的内容是乱码把驱动换回 PCL或者反过来试一次故障即可定位。我在实际维护中还遇到过一种情况麒麟端显示任务已发送但 Windows 主机队列里根本没有这条任务。这时候不要去查打印机重点检查麒麟端的 Cups 服务状态和日志用systemctl status cups看服务是否正常再看/var/log/cups/error_log里 smb 后端有没有报错。跨系统环境排错的顺序永远是先看 SMB 层通不通再看队列是否进入 Windows 端最后才轮到驱动和数据格式。