
打印机在 Windows 上出问题,有三类原因常被混在一起:驱动或端口配置不对、打印服务和排队数据卡住、以及系统层面的安全策略不允许。前两类是"坏了要修",第三类是"本来就不让做"——而第三类恰恰是 2021 年之后新增的,很多人的问题都出在这里。
打印机修复工具处理的主要是前两类。要理解它为什么有时能解决、有时解决不了,得先看清这三层的分工。
分界线是一次漏洞披露。打印后台处理程序是 Windows 的系统服务,同时负责加载各家厂商的打印驱动组件。漏洞在于:驱动安装这条路径可以被利用来以 SYSTEM 权限执行任意代码,编号 CVE-2021-34527,业内叫 PrintNightmare。
微软的应对方式之一,是把"安装打印机驱动"这件事的权限门槛提上来。在此之前,普通用户连接共享打印机时,缺驱动可以自动从打印服务器拉取并安装;在此之后,这条路径默认要求管理员权限。
用户感受到的变化很具体:
其中 0x0000011b 最典型。它本身表示 RPC 通信没建立起来,而触发原因是补丁同时收紧了打印相关的 RPC 认证方式,老版本的打印服务器和新版本的客户端之间就对不上了。
这类问题的处理位置不在客户端。 需要在打印服务器那一侧调整策略,而且调整意味着降低安全等级,要权衡;如果机器在域里,则由组策略统一决定。
理解这一层,能解释另一个现象——为什么有的打印机驱动装完很稳,有的三天两头把打印服务搞挂。
v4 是微软推的方向,但现实中仍有大量 v3 驱动,尤其是老机型和带扫描、传真功能的一体机,因为它们依赖 v3 模型里的界面组件。
怎么确认自己装的是哪一种:打开打印管理控制台,在驱动列表里可以看到驱动类型;或者看打印机属性页,v4 驱动的配置界面通常更简单。
这也解释了"为什么装错驱动版本会连累所有打印机":v3 模型的组件跑在同一个服务进程里,一个组件出错,服务重启,所有打印机一起消失。
这张表里,前四行属于打印服务这一层,后三行属于驱动与端口配置。打印机修复工具的作用范围主要在这张表的中间几行:它做的是把卡死的队列清空、把残留的后台文件与服务状态复位、把驱动和端口的关联重新建立起来。
打印服务是常驻的系统服务,它同时持有着几样东西:当前队列、各驱动组件的运行状态、后台文件夹里正在处理的作业文件。
后台文件夹在系统盘的 spool 目录下,任务进行时会生成成对的临时文件,一个描述作业内容,一个描述作业属性。服务异常退出后,这些文件可能留在原地;服务重启时会把它们当成未完成的作业重新捡起来,于是又卡在同一处。所以只重启服务,有时会出现"好了几秒又卡住"。
要彻底恢复,顺序是停服务、清空后台文件夹、再启动服务。用 PowerShell 写出来是三行:
Stop-Service -Name Spooler -Force
Remove-Item "$env:SystemRoot\System32\spool\PRINTERS\*" -Force -Recurse
Start-Service -Name Spooler顺带说明:这个目录下只有打印作业的临时文件,清理它不会影响已安装的驱动和端口配置。真正需要谨慎的是驱动包本身,卸载不干净会在重装时报"驱动已在使用",那种情况要在打印管理控制台里先删掉驱动包,再清理系统盘 spool 目录下的驱动文件。
按上面的分层,打印机修复工具这类工具的合理定位是:处理本机侧的服务、队列与驱动残留问题。
它能做的:
它做不到的:
判断标准可以简化成一句:问题出在"这台机器上的软件状态",修复工具有用;问题出在"别人不允许"或者"硬件本身",工具帮不上。
打印故障看起来杂乱,按三层分就清楚了:
打印机修复工具覆盖前两层,能省掉手工排查的步骤;遇到第三层的问题,它给出的结果往往是"修完还是连不上",这时该往策略方向查,而不是继续重装驱动。
安装包地址:
https://www.ijinshan.com/functions/repairprinter.html?channel=4029
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。