打印机共享失败排查:0x00000709、SMB与RPC错误码解析
打印机共享这四个字看着平平无奇真上手能把人磨到没脾气。我这些年帮朋友、帮公司行政处理过的打印机问题没有一百也有八十起了主机的打印机明明共享出去了隔壁工位的电脑就是搜不到昨天还打得欢今天开机弹一个 0x00000709Win11 的笔记本去连 Win7 老台式机共享出来的机器系统直接甩一句操作失败连错误码都懒得翻译更别提 Linux 那边Ubuntu 里 CUPS 显示打印机在线任务也发出去了纸一张都不吐。这些问题的根源其实高度集中在几个点上只是 Windows 把它们包装成了看起来毫不相干的错误码。这篇内容我想把两件事讲透一是打印机共享到底该怎么设才能一次成功二是共享失败之后怎么从错误码反推出真正出问题的那一环。不管你是家里两台电脑共用一台打印机还是小办公室里十几台机器连一个主机或者你用的是 Ubuntu、macOS 去连 Windows 共享下面这些东西都能直接抄。文章里会给出完整的操作路径、注册表位置、脚本命令还有我自己踩过的坑。看完你至少能做到别人报个错误码过来你大概知道该先动哪一步。1. 共享打印机之前先把三条技术路线选明白很多人一上来就问共享怎么设置其实这个问题问早了。打印机共享不是一种技术而是三种完全不同的实现方式选错了路线后面怎么调都是事倍功半。1.1 主机直连共享、网络打印服务器、IPP 免驱三条路的取舍第一条路是主机直连共享也就是最常见的做法一台电脑用 USB 线连着打印机装上驱动然后把这台电脑当成打印服务器把打印机共享出去。它的优势是零成本、不用买任何东西家用和小办公室最划算。代价是那台主机必须开机而且它的网络、系统补丁、休眠策略全都直接影响其他人能不能打印。第二条路是打印机自带网口或者加一个打印服务器小盒子。打印机直接插网线拿一个独立 IP所有电脑都用 IP 去连它。这条路最稳因为它不依赖任何一台电脑的开机状态谁关机都不影响。现在几百块的激光一体机基本都带网口和无线买之前看一眼有没有 RJ45 口能省掉后面一大半麻烦。第三条路是 IPP Everywhere / AirPrint / Mopria 这类免驱协议。近几年的打印机普遍支持Windows 10 之后添加设备时会自动按 IPP 方式发现macOS 和 iOS、安卓也原生支持。它最大的好处是不用装厂商驱动系统自带一套通用驱动就能打出问题的概率比共享低得多。三条路的对比我整理成下面这张表选之前对着看一遍路线成本稳定性依赖主机开机适合场景主机直连共享SMB零中是家用、两三台机器打印机网口 / 打印服务器中高否小办公室、多台机器IPP / AirPrint 免驱零高否新打印机、混合系统提示如果你现在的打印机带网口别犹豫直接用 IPP 或 IP 直连把共享这件事绕过去后面所有错误码都跟你没关系了。本文后面大部分篇幅讲的是第一条路因为坑基本都在那儿。1.2 为什么 Windows 共享这么容易翻车三方博弈的结果要理解报错得先理解 Windows 共享打印其实是好几套机制摞在一起。最底下是SMB 文件共享通道走 445 端口客户端要先通过它拿到共享出来的打印机入口。上面一层是RPC 远程过程调用走 135 端口加一段动态端口用来远程操作打印子系统。再上面是Print Spooler 打印后台处理程序负责收任务、排队、把数据丢给驱动。最后还有一层Point and Print 驱动分发决定客户端能不能自动把驱动从主机拉过来装上。这四层里任何一层被系统补丁、组策略、防火墙、第三方安全软件掐掉前端给你弹的都是一个笼统的错误码。这就是为什么同一个 0x00000709网上能搜出十几种解法有的管用有的不管用——因为大家坏的其实不是同一层。想清楚这一点排查的时候你就不会乱试了而是按层往下剥。还有个很多人忽略的点共享打印对网络环境异常敏感。同一个交换机下有线连的机器稳如老狗Wi-Fi 连的机器三天两头掉多半是无线的省电策略或者 AP 隔离在捣鬼。这类问题不看错误码看的是网络拓扑。2. 共享端设置把打印机稳稳地共享出去这一节讲的是主机要怎么配。我见过太多失败案例问题根本不在客户端而在于主机这边少勾了一个选项。按下面的顺序走一遍能规避掉八成问题。2.1 开共享之前的网络前置检查先确认三件事这三件事不确认后面全是白干。第一两台机器在同一个网段、同一个工作组。家用路由器一般是 192.168.1.x 或 192.168.0.xIP 前三段一样才叫同一网段。工作组默认都是 WORKGROUP如果你改过两台机器必须一致。查看和修改在此电脑 → 属性 → 高级系统设置 → 计算机名里。第二网络位置必须是专用网络。Windows 把网络分成专用和公用两种公用网络下文件和打印机共享是默认关掉的而且防火墙规则更严。切换到专用网络的入口在设置 → 网络和 Internet → 以太网/WLAN → 网络配置文件类型。这一步特别容易被忽略尤其是插网线之后系统默认给的是公用网络。第三主机用固定 IP。DHCP 分配的地址会变今天客户端连的是 192.168.1.10明天主机重启变成 192.168.1.15客户端那个快捷方式就废了。在路由器里做 IP-MAC 绑定或者主机上手动设静态 IP 都行。我个人的习惯是所有需要被共享的机器一律在路由器里绑定 IP省得以后找不到人。注意如果你是无线连接先在路由器里关掉AP 隔离或客户端隔离。这个功能一开同一个 Wi-Fi 下的设备互相看不见表现就是网络正常但就是搜不到共享特别隐蔽。2.2 打印机共享与 Everyone 权限的正确配置主机上的打印机驱动装好、能正常打印之后开始共享。打开控制面板 → 设备和打印机找到那台打印机右键 →打印机属性→ 切到共享选项卡 → 勾选共享这台打印机 → 填写共享名。这里的共享名有个讲究用简短的英文或数字不要用中文、空格和特殊符号。比如HP1108、OFFICE01。中文共享名在很多场景下会引发编码问题表现就是客户端能找到但连不上或者从服务器获取共享列表失败无效的参数。这个坑我踩过改了名就好了前后折腾了半小时。接着切到安全选项卡点编辑→添加输入Everyone确定之后在权限列表里勾上打印。只需要给打印权限管理此打印机不要给——给了别人就能删你的打印任务、改驱动没必要。如果你希望更精细一点可以只添加具体用户而不是 Everyone比如打印专用账号。在小办公室里建一个专门的本地账户给打印用比开来宾账户安全得多后面会细说。2.3 网络发现、密码保护共享与 SMB 协议的关键开关回到控制面板 → 网络和共享中心 → 高级共享设置展开专用那一栏确认这几项启用网络发现启用文件和打印机共享允许 Windows 管理家庭组连接新系统已无此项然后往下拉到所有网络那一栏公用文件夹共享开不开都行不影响打印密码保护的共享这是关键点密码保护的共享如果是启用那么客户端连过来必须提供主机上一个有效的账户密码。如果是关闭则允许以访客身份连接。企业环境建议启用并用专用账户家用环境可以关闭省事。再往下是 SMB 协议。Windows 10 1709 之后SMB1 默认被卸载了因为它的安全性太差。但一些老设备、老 NAS、老打印机内置的共享服务只认 SMB1。如果你要连的是这类老家伙需要手动装回来控制面板 → 程序和功能 → 启用或关闭 Windows 功能 → 找到 SMB 1.0/CIFS 文件共享支持 → 展开 → 勾选客户端和服务器。提示SMB1 的安全性确实不好装回来之后建议只在内网用外网能碰到的机器千万别开。如果只是客户端这边需要勾客户端就够主机要对外提供老协议共享才勾服务器。还有一个更隐蔽的策略从 Windows 10 1809 开始默认禁止不安全的来宾登录。这意味着即便你关了密码保护共享客户端也可能因为来宾被策略拦住而连不上报的错往往就是 0x0035 或者找不到网络路径。这个开关在组策略里运行 gpedit.msc → 计算机配置 → 管理模板 → 网络 → Lanman 工作站 → 启用不安全的来宾登录设为已启用。家庭版没有组策略编辑器得走注册表。2.4 防火墙和端口把该放行的放行Windows 防火墙默认会放行文件和打印机共享这个规则组但很多安全软件、优化工具会把它关掉。检查方式打开Windows Defender 防火墙 → 允许应用或功能通过防火墙往下找文件和打印机共享确保专用那一列是勾上的。如果嫌点来点去麻烦管理员权限的命令提示符里一条命令搞定netsh advfirewall firewall set rule group文件和打印机共享 new enableYes英文系统里把组名换成File and Printer Sharing即可。共享打印涉及的端口不止一个我把它们列出来方便你用 telnet 或端口工具逐个验证端口协议作用不通时的典型现象445/TCPSMB现代共享主通道报 0x0035 找不到网络路径139/TCPNetBIOS over TCP老系统共享通道老设备连不上共享135/TCPRPC 端点映射定位远程打印服务打印相关 RPC 调用失败49152-65535/TCPRPC 动态端口打印子系统远程调用报 0x0000011b 一类错误9100/TCPRAW/JetDirect带网口打印机直打网络打印机不响应631/TCPIPP标准打印协议IPP 方式连不上在客户端上验证 445 通不通最土但最好用的办法telnet 192.168.1.10 445连上了屏幕会变黑或者闪一下连不上会提示连接失败。Win10 之后 telnet 客户端默认没装可以在启用或关闭 Windows 功能里勾上或者直接用 PowerShellTest-NetConnection 192.168.1.10 -Port 4453. 客户端连接Win10/Win11 添加共享打印机的几种姿势主机配好了接下来是客户端。这里我要强调一句不要只用添加打印机里面那个自动搜索那个功能依赖网络浏览服务是老架构留下的东西在网络环境稍微复杂一点的地方就不灵。下面几种方式从易到难建议直接用第二种。3.1 常规添加流程与凭据弹窗怎么填标准路径是设置 → 蓝牙和其他设备 → 打印机和扫描仪 → 添加设备等它搜。如果搜到了直接点就行。搜不到就点我需要的打印机不在列表中然后选按名称选择共享打印机在框里输入\\192.168.1.10\HP1108这里我强烈建议用 IP 而不是主机名。主机名解析依赖 NetBIOS 或者 mDNS在有些网络里会失败或者很慢IP 是直接的只要网络通就行。输入之后如果主机开了密码保护共享会弹一个凭据窗口让你填用户名和密码。用户名要写成主机名\用户名或者IP\用户名的格式比如192.168.1.10\printuser光填用户名有时候不认。密码就是主机上那个账户的密码。勾上记住我的凭据以后就不用反复输了。如果填完凭据还是报错去控制面板 → 凭据管理器 → Windows 凭据里看看是不是存了旧密码删掉重来。3.2 用本地端口直连绕过网络浏览列表的最稳方案这是我个人最推荐的方式几乎百试百灵因为它完全跳过了搜索/浏览这一层直接建立 SMB 连接。操作路径添加打印机 → 我需要的打印机不在列表中 → 选通过手动设置添加本地打印机或网络打印机→ 下一步 → 选创建新端口端口类型选Local Port→ 下一步 → 在输入端口名里填\\192.168.1.10\HP1108然后下一步选打印机厂商和型号装驱动完成。这个方式的原理是Windows 会为这个 UNC 路径创建一个本地端口打印任务直接往这个端口投递走的是标准 SMB 通道不经过网络浏览服务也不依赖 Function Discovery 那些组件。所以那些从服务器获取共享列表失败的毛病在这个方式下根本不会出现。同理如果你的打印机是带网口的可以直接建一个Standard TCP/IP Port填打印机 IP协议选 RAW端口号 9100或者选 IPPURL 填http://打印机IP:631/ipp/print。这两种方式对打印机本身的固件有要求新机器基本都支持。3.3 驱动与 Point and Print别让客户端去主机上找驱动共享打印最容易出问题的一环就是驱动分发。默认情况下客户端连接共享打印机时会尝试从主机把驱动拉下来自动安装。这里有几个坑第一架构要对上。如果共享主机是 32 位系统客户端是 64 位系统主机上必须额外装一份 64 位驱动否则客户端拉不到会报驱动安装失败。现在 32 位系统基本绝迹了但老办公室里还能见到。第二非管理员用户装不了驱动。从某个 Windows 版本开始微软收紧了 Point and Print 的默认策略普通用户连共享打印机时如果需要装驱动会被拦下来报的错五花八门0x0000011b 就经常出现在这里。绕过的办法有两个。上策是在客户端先本地装一遍同型号驱动装好之后再去连接共享打印机这时系统发现驱动已存在就不会去主机拉直接就通了。下策是改策略在客户端或通过域策略放开驱动安装权限注册表位置在HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint RestrictDriverInstallationToAdministrators 0第三那个被传烂了的 RpcAuthnLevelPrivacyEnabled。很多 0x00000709、0x0000011b 的问题本质是打印后台的 RPC 认证级别被提高了客户端和主机协商不上。把下面这个值设为 0让认证回到宽松级别能解决一大票问题Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print] RpcAuthnLevelPrivacyEnableddword:00000000改完必须重启打印后台处理程序才生效net stop spooler net start spooler注意这个开关会降低打印 RPC 的认证强度只在你能控制的内网里用。跨网段、跨部门的场景要慎重最好走正规的域策略和驱动分发方案。4. 错误码逐个拆每种报错背后真正坏掉的那一环到了这一节就是干货密度最高的地方了。我把共享打印最常见的错误码整理成一张表然后再一个个拆开讲。错误码字面含义最常见触发场景一线的处置动作0x00000012没有更多文件网络浏览列表拉取失败启用发现类服务或直接用 UNC 路径0x00000006句柄无效后台处理程序卡死、驱动残留清空 spool 目录、删残留驱动、重启服务0x00000709打印机名称/默认打印机异常同名残留设备、驱动冲突清理同名设备 RpcAuthnLevelPrivacyEnabled0x00000520登录会话不存在凭据会话失效清凭据管理器、重启 Workstation 服务0x00000040网络名不再可用主机会话掉线、休眠关睡眠、固定 IP、重启相关服务0x0035 / 0x35找不到网络路径防火墙拦截、名称解析失败改用 IP、放行文件和打印机共享0x0000011bRPC 认证级别过高系统打补丁之后RpcAuthnLevelPrivacyEnabled 置 04.1 0x00000012 与 0x00000006列表类故障和句柄类故障0x00000012的字面意思是没有更多文件。它几乎总是伴随从服务器获取共享列表失败一起出现问题出在**网络浏览Network Browser**这条链路上。Windows 早期靠一台主浏览器来维护网上邻居的列表现在这套机制虽然还在但已经半废了。处置顺序先看Function Discovery Provider Host、Function Discovery Resource Publication、Computer Browser这三个服务的状态改成自动并启动如果还是不行直接放弃自动搜索改用第 3.2 节的 Local Port 方式问题秒解。这也是为什么我一开始就说别依赖自动搜索。0x00000006是句柄无效这类错误基本可以锁定在打印后台处理程序上。常见原因是某个打印任务卡死在队列里spool 目录下堆积了坏文件或者之前装过同一型号的驱动没卸干净注册表里留了残骸。处置办法把打印服务停掉清空 spool 目录再启起来net stop spooler del /Q /F C:\Windows\System32\spool\PRINTERS\* net start spooler删除PRINTERS目录里的文件是安全的那里面就是排队中的任务缓存删掉等于清空队列。如果清完还报 06就要去打印机服务器属性 → 驱动程序里把同一型号的残留驱动删掉重装。4.2 0x00000709名字冲突、默认打印机和 RPC 三件事操作无法完成错误 0x00000709再次检查打印机名称并确保打印机已连接到网络——这句话本身没什么信息量它是三个不同原因共用的一个出口。原因一客户端已经有同名打印机了。Windows 允许存在多个同名打印机但把它们切换成默认打印机的时候就会冲突。去设备和打印机里看看是不是有好几个叫HP1108的图标把它们全删掉重加。原因二默认打印机指向了一个已经消失的设备。比如你之前连的共享打印机后来删了但默认打印机还指着它系统每次调用默认打印机就报 709。手动把默认打印机改成别的再删掉幽灵设备。原因三RPC 认证级别。这就是前面说的RpcAuthnLevelPrivacyEnabled改成 0 之后重启 spooler一大批 709 会消失。我自己处理 709 的习惯顺序是先清理同名设备30 秒不行再改注册表2 分钟再不行就上 Local Port 大法。三步之内基本都能解决。4.3 0x0035 和 0x00000520网络路径与会话失效的区别0x0035就是十进制的 53含义是ERROR_BAD_NETPATH——找不到网络路径。这个错误的指向非常明确客户端压根没能和主机建立连接。排查顺序是ping 192.168.1.10通不通Test-NetConnection 192.168.1.10 -Port 445通不通主机防火墙的文件和打印机共享规则是否放行主机上启用文件和打印机共享是否勾上共享名是不是中文改成英文这五点里任何一点不满足都会报 0035。我自己遇到最多的是第 3 点装了个安全软件之后规则被悄悄关了。0x00000520是登录会话不存在或已被终止它跟 0035 的层次不一样——连接是通的但身份验证这一层的会话已经失效了。典型场景是主机重启过、账户密码改过、或者凭据缓存的会话被系统回收了。处置打开控制面板 → 凭据管理器 → Windows 凭据把跟这个主机相关的条目全部删除然后重新连接一次重新输入用户名密码。如果还不行重启客户端的Workstation服务和主机的Server服务net stop workstation /y net start workstation主机那边net stop server /y net start server这两个服务是 SMB 的客户端和服务端引擎共享相关的会话数据都归它们管重启它们相当于把会话层清了一遍。4.4 0x00000040会话被掐断多半是主机睡着了ERROR_NETNAME_DELETED字面意思是指定的网络名不再可用。这个错误的出现时机很关键如果你是打印打到一半、或者放置一段时间后再去点打印才报这个那几乎可以确定是主机进入了睡眠或者断开了网络。Windows 默认的睡眠时间一般是 15 到 30 分钟。主机的网卡一旦跟着系统睡下去客户端的 SMB 会话就断了再唤醒的时候会话 ID 已经对不上就报 40。处置主机电源和睡眠里把睡眠和休眠设为从不至少在有打印需求的时段Win10/Win11 的快速启动关掉控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选启用快速启动网卡属性 → 电源管理 → 取消允许计算机关闭此设备以节约电源主机 IP 固定下来无线连接的场景下还要注意 AP 的空闲踢除策略有些企业级 AP 会把长时间没流量的客户端踢下线表现跟这个一模一样。4.5 顺带说说 0x0000011b补丁留下的经典问题虽然热搜里没怎么提但只要是 2021 年下半年之后开始搞共享打印的人基本都撞过这个。某个系统补丁把打印 RPC 的认证级别提高了导致大量之前正常的共享环境一夜之间全部报0x0000011b。处置办法有两个方向一是打后续的修复补丁微软后来出了缓解方案二就是前面那个注册表开关把RpcAuthnLevelPrivacyEnabled置 0。企业环境如果不想降级认证就得老老实实上域环境加正规的打印服务器这是长期方案。5. 特殊场景Win11 连 Win7、Linux 连 Windows前面讲的是通用路径。实际工作里麻烦基本都出在跨代和跨系统这两个场景上。5.1 Win11/Win10 连 Win7 共享打印机三个最容易漏的点Win11 的笔记本去连 Win7 老台式机共享出来的打印机是现在小办公室里最常见的组合也是最容易翻车的组合。除了前面说的常规配置还有三个点必须单独处理。第一SMB1 必须装回来。Win7 默认用 SMB1 协商而 Win11 已经完全移除了这个组件。装回来之后Win11 客户端那边勾客户端就够主机Win7那台不用动它本来就有。不装的话表现是能看到共享、能点连接但到某一步就失败错误码不固定。第二来宾登录策略。Win7 上的共享往往是开来宾的而 Win11 默认拒绝不安全来宾登录。前面讲过组策略里把启用不安全的来宾登录设为已启用或者走注册表Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters] AllowInsecureGuestAuthdword:00000001第三也是最省事的一招别用来宾建个专用账户。在 Win7 那台上建一个本地账户比如print设个简单密码然后把这个账户加到允许打印的名单里。客户端连的时候填Win7主机名\print加密码一次记住从此不再出问题。为什么这一招最省事因为它绕开了来宾这条注定要被微软一步步收紧的路。来宾登录在安全上确实站不住微软每次大版本都在削它你今年配通了明年系统更新一次可能又废了。专用账户这条路在未来几年内都是稳的。5.2 Ubuntu/Linux 连 Windows 共享打印机能连上但打不出来是为什么Linux 这边的情况跟 Windows 完全不同它连上打印机的成功率其实更高但连上了不出纸的比例也更高。原因在于驱动层。先装必备组件sudo apt update sudo apt install smbclient cups cups-client cups-filters先用 smbclient 验证共享能不能看到smbclient -L //192.168.1.10 -U print如果这一步列出了共享列表说明网络和凭据都没问题。看不到的话先回头检查主机的防火墙和 SMB1。然后在 CUPS 里添加。打开浏览器访问http://localhost:631进 Administration → Add Printer连接串填smb://print:密码192.168.1.10/HP1108也可以直接用命令行添加更利索lpadmin -p WinShare -E -v smb://print:密码192.168.1.10/HP1108 -m everywhere cupsenable WinShare cupsaccept WinShare关键在-m这个参数也就是驱动选择。优先级是厂商提供的 Linux PPD 文件 everywhereIPP Everywhere 通用驱动 具体的 PCL/PostScript PPD raw完全不处理把数据原样丢过去。如果你在 CUPS 里点了打印任务状态显示completed但打印机一动不动八成是驱动不对。最快的验证办法是把驱动改成raw再试一次如果 raw 模式下能打出一堆乱码文本说明通路完全没问题问题 100% 在驱动如果 raw 也不出纸那就是通路问题回去查 SMB 和共享权限。还有一个特别隐蔽的坑双向支持Bidirectional。CUPS 默认会通过 SNMP 查询打印机的状态某些 Windows 共享的打印机不支持 SNMP或者中间隔了防火墙CUPS 就会一直卡在查询状态这一步队列显示处理中但就是不动。解决办法是在 CUPS 的这台打印机设置里把双向支持之类的选项关掉或者直接在 Windows 主机那边把 SNMP 状态查询关掉。检查打印队列状态用lpstat -p WinShare -o测一张测试页lp -d WinShare /usr/share/cups/data/testprintmacOS 的做法更简单系统设置里添加打印机选IP标签页协议选 IPP 或 LPD或者在Windows标签页里直接浏览工作组。不过 macOS 同样会遇到驱动匹配问题思路跟 Linux 一致。6. 从服务器获取共享列表失败两类报错的定点处理这个提示框是很多人搜索时的原话它后面通常跟着两种后缀对应的问题完全不一样。6.1 后缀是无效的参数这个错误出在网络发现的组件链上。Windows 想列出网络上的共享列表需要依赖四个服务协同工作服务名显示名作用fdPHostFunction Discovery Provider Host提供发现接口FDResPubFunction Discovery Resource Publication把自己发布出去SSDPSRVSSDP Discovery简单服务发现upnphostUPnP Device HostUPnP 设备托管这四个里任何一个没启动或者启动类型是手动但被系统闲置停掉了都会导致列表拉取失败。批量检查的命令Get-Service fdPHost, FDResPub, SSDPSRV, upnphost | Select-Object Name, Status, StartType如果状态不是 Running用管理员权限启动并设为自动sc config fdPHost start auto sc config FDResPub start auto sc config SSDPSRV start auto sc config upnphost start auto net start fdPHost net start FDResPub net start SSDPSRV net start upnphost注意sc config里start后面必须有一个空格再跟auto这是 sc 命令的语法要求写成startauto会报错很多人卡在这儿。还有两个附加条件网络位置要是专用以及 SMB1 组件如果被卸载了老式的浏览服务也可能拉不到列表。满足这些条件之后如果还是无效的参数就别折腾了直接用 UNC 路径连这是根本不依赖发现服务的方案。6.2 后缀是重置时断开网络连接这个提示听起来像网络断了实际多半不是。它的触发点通常是系统在重置网络栈或者重新加载网络发现模块时把当前连接掐了。几个常见的真凶网卡的电源管理。设备管理器 → 网络适配器 → 右键网卡 → 属性 → 电源管理 → 取消勾选允许计算机关闭此设备以节约电源。无线网卡这一项尤其关键很多笔记本的无线网卡默认开启省电网速一慢或者一空闲就掉线。网络相关的系统服务异常。检查Network List Service、Network Location Awareness、DNS Client这几个服务的状态异常的话重启一遍。第三方安全软件的网络防护。有些安全套件的局域网防护ARP 防火墙会拦截 SMB 广播表现就是网络发现时断时续。临时退出这类软件测一下能立刻定位。如果以上都没问题可以考虑重置网络栈。但要提醒一句netsh winsock reset和netsh int ip reset会把网络配置一键还原包括你设的静态 IP、DNS、共享设置重置完要重新配。所以这是最后的手段先试前面几项。netsh winsock reset netsh int ip reset执行完必须重启重启之后重新设置共享。7. 一键修复工具与脚本什么时候能用什么时候是坑搜索这些错误码肯定会看到打印机共享修复工具nt6 打印机共享修复工具之类的推荐。我用了几个也反编译看过它们做了什么这里把真相摆出来你自己判断。7.1 这类工具到底改了什么拆开看所谓一键修复做的无非是下面这几件事的组合把RpcAuthnLevelPrivacyEnabled改成 0把AllowInsecureGuestAuth改成 1打开 SMB1 组件打开防火墙的文件和打印机共享规则组把 fdPHost、FDResPub 等服务设为自动并启动停掉 spooler清空 spool 目录再启动把网络位置改成专用清掉一些打印机相关的残留注册表项补上一些权限给 Everyone 打印权限理解了这个清单你会发现这些动作你完全可以在十分钟内手动做完而且心里清楚每一步在干什么。这比用来源不明的工具安全得多。风险在哪里这类小工具很多是个人开发的没有签名下载站的版本还可能被捆绑过。我见过的情况包括安装时顺带装浏览器插件、改浏览器主页、静默添加开机启动项、甚至关掉整个防火墙。为了修一个打印机而关掉防火墙这个代价实在不值。我的建议是如果一定要用只从可信的开发者的原始发布页下载先在虚拟机或者测试机上跑一遍看它改了哪些注册表、加了哪些启动项确认没问题再上生产机器。更好的做法是照着第 7.2 节自己写一个脚本存着以后每次遇到就双击改什么一目了然。7.2 自己写一个可控的一键修复脚本下面这个批处理脚本涵盖了我日常处理共享失败 90% 的操作用管理员权限运行即可。它的好处是你知道每一行在做什么想删哪行就删哪行。echo off chcp 65001 echo 正在修复打印机共享环境... echo [1/6] 降低打印 RPC 认证级别缓解 0x709 / 0x11b reg add HKLM\SYSTEM\CurrentControlSet\Control\Print /v RpcAuthnLevelPrivacyEnabled /t REG_DWORD /d 0 /f echo [2/6] 允许不安全的来宾登录缓解 0x35 / 0x520 reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters /v AllowInsecureGuestAuth /t REG_DWORD /d 1 /f echo [3/6] 启用网络发现相关服务 sc config fdPHost start auto sc config FDResPub start auto sc config SSDPSRV start auto net start fdPHost 2nul net start FDResPub 2nul net start SSDPSRV 2nul echo [4/6] 放行文件和打印机共享防火墙规则 netsh advfirewall firewall set rule group文件和打印机共享 new enableYes echo [5/6] 重启打印后台处理程序并清空队列 net stop spooler /y del /Q /F C:\Windows\System32\spool\PRINTERS\* 2nul net start spooler echo [6/6] 重启 SMB 会话层服务 net stop server /y 2nul net start server 2nul echo 修复完成建议重启一次再测试连接。 pause注意这个脚本里的第 2 步会放宽来宾登录限制第 5 步会清空所有人的打印队列如果主机上有别人正在打的文件会被清掉。所以在有同事共用的机器上跑之前最好挑个没人打文件的时间点或者把第 5 步的删除命令注释掉。8. 排查速查表与几条踩坑心得最后把上面所有内容压缩成一张按现象检索的表遇到问题直接从现象那一列找。现象最可能的原因先动哪一步完全搜不到共享打印机网络发现服务没起、SMB1 缺失起 fdPHost/FDResPub或直接用 UNC搜得到但连不上报 0x35防火墙拦 445、共享名是中文放行共享规则共享名改英文报 0x709同名设备残留、RPC 认证高清设备 RpcAuthnLevelPrivacyEnabled0报 0x11b补丁导致的 RPC 认证提升同上或打修复补丁报 06spool 卡死、驱动残留清 spool 目录 删残留驱动报 520凭据会话失效清凭据管理器 重启 Workstation报 40打一半断掉主机睡眠、无线掉线关睡眠、关网卡省电、固定 IPLinux 有任务不出纸驱动不匹配、双向查询卡住改 raw 验证关双向支持列表获取失败无效的参数发现类服务异常、网络位置是公用起服务 改专用网络列表获取失败重置时断网网卡省电、安全软件拦截关网卡省电退安全软件测试再说几条从我自己的踩坑经历里总结出来的、文档里不会写的东西。第一条先问是不是只有这一台连不上。如果全办公室都连不上问题在主机只有一台连不上问题在客户端。这个判断能帮你省掉一半的排查时间。我见过有人客户端折腾了两小时最后发现是主机换了 IP。第二条把能 ping 通和能连 445分开看。ping 通只代表三层网络没问题445 不通代表共享通道被拦了这是两个完全不同的问题域。很多人 ping 通了就认为网络没问题然后一头扎进驱动里去方向从一开始就错了。第三条改完注册表一定要重启 spooler。注册表项是加载时读取的改完不重启服务一点效果都没有。这个细节让我白忙过好几次。第四条企业环境别乱动网络发现和来宾。这些开关在家里用没问题到了有域控、有安全策略的环境改了可能触发合规告警甚至被 IT 直接推回。这种情况下正确的做法是走域内的打印服务器方案用组策略统一推驱动这才是正路。第五条记录下你调通的配置。主机 IP、共享名、用的哪个账户、改了哪几个注册表项随手记在一个文档里。半年以后系统更新又出问题的时候照着文档核对一遍比从零开始快十倍。我现在给每个客户建一个这样的文档累计下来省的时间相当可观。顺带说一句如果你现在的打印机是这几年买的新型号真的可以认真考虑一下 IPP 或者直接 IP 直连。共享这条路虽然免费但它的隐性成本是持续存在的系统一更新就要重新调跨系统一多就要重新配。我经手的案例里凡是后来换成带网口直连的基本都没再找我第二次。