重启打印池服务后添加Windows共享打印机耗时45秒的排查求助
我之前碰到过几乎一模一样的打印池重启后添加共享打印机慢的问题,给你分享几个亲测有效的排查方向和解决办法:
问题背景
- 环境:打印服务器为Windows 2016,客户端是Windows 7/Windows 10
- 异常现象:重启Print Spooler服务(或重启客户端电脑)后,添加共享打印机(如
\\server\printer)耗时约45秒,即使驱动已经下载完成,延迟依旧存在 - 复现步骤:
- 以管理员身份运行PowerShell,执行:
restart-service spooler - 切换为普通用户,执行以下命令并记录时间:
date add-printer -connectionname \\server\printer date - 测试结果示例:
Wednesday, May 2, 2018 10:39:08 AM Wednesday, May 2, 2018 10:39:51 AM
- 以管理员身份运行PowerShell,执行:
1. 优先排查名称解析延迟
添加共享打印机的第一步是客户端解析服务器名称,DNS或NetBIOS的延迟经常是罪魁祸首:
- 在客户端用
nslookup server和ping server测试解析和响应速度,如果发现解析慢,直接在客户端的C:\Windows\System32\drivers\etc\hosts文件里手动添加服务器IP和主机名的映射,再测试添加速度。 - 临时禁用客户端的IPv6试试,自动配置的IPv6有时候会干扰名称解析,导致不必要的等待。
2. 检查打印服务器的Spooler服务依赖
Windows 2016的Print Spooler依赖HTTP和RPC服务,如果这两个服务启动慢或者异常,会直接拖慢客户端连接:
- 登录打印服务器,打开服务管理器,找到「Print Spooler」,右键查看「依赖关系」,确保
HTTP和Remote Procedure Call (RPC)都是正常运行状态,启动类型设置为「自动」。 - 可以把Print Spooler的「恢复」选项设置为「第一次失败时重启服务」,避免服务异常导致的后续连接延迟。
3. 清理打印服务器上的冗余驱动
哪怕客户端已经下载了驱动,服务器上的旧驱动、重复驱动或者不兼容驱动也可能导致客户端连接时的校验延迟:
- 在服务器上打开「打印管理」,展开「打印服务器」>「驱动程序」,删除那些客户端不需要的旧版本驱动、重复驱动(比如同时存在x86和x64但客户端只用一种的)。
- 确保服务器上的驱动是对应客户端系统(Win7/Win10)的官方最新版,尽量用厂商专用驱动,别用通用驱动包。
4. 用Process Monitor精准定位延迟点
你已经用了ProcMon,但可能需要更精准的过滤:
- 启动ProcMon后,先过滤进程为客户端的
spoolsv.exe,然后开始监控添加打印机的过程。 - 重点看耗时超过1秒的操作,尤其是那些标记为
NAME NOT FOUND或ACCESS DENIED的项——这些大概率是客户端在重试访问不存在的文件/注册表项,导致了45秒的超时等待。
5. 检查组策略和安全设置
某些组策略或安全配置会延长打印连接的超时时间:
- 在客户端运行
gpedit.msc,查看「计算机配置>管理模板>打印机」里的选项,比如「指向打印服务器的连接超时」,如果设置得过长,会直接导致延迟;另外确认「允许打印池」等相关设置是否合理。 - 打开本地安全策略,找到「网络访问: 本地账户的共享和安全模型」,设置为「经典 - 本地用户以自己的身份验证」,有时候身份验证方式的问题会导致连接慢。
内容的提问来源于stack exchange,提问作者js2010
相关产品推荐
相关产品推荐

