Day 7104 在 Windows 10 下使用 LPD 打印服务共享打印机

自从 2021 年的 KB5005565 开始,微软就在玩坏 Windows 内置的打印机共享功能的道路上越走越远,虽然知道微软是为了修复 Windows 共享中的漏洞而做出的修改,但你要不要首先确保用户的功能可以继续正常使用?

时至今日,微软的出品质量越来越差,每一次的 Windows Update 都可能引入新的严重 bug,尤其是共享打印机功能,以前通常只需要考虑跨大版本不易解决(如 Win10 去连接 Win7 的共享打印机、XP 去连接 Win11 的打印机等等),而现在甚至同代系统之间都可以昨天还能用、今天就全炸锅了。

前一段时间因各种原因,给某公司组装了几十台办公电脑,由于并非常驻对方公司,无法像在供职公司一样出问题随时上门,在被 Windows 10 优秀的共享打印机功能教训过后(前一天同一个办公室还能用,第二天就全体报错,并且无法重新添加),终于在检索维护方案时,找到一种不需要额外投入成本的方法,即使用 Windows 目前还内置的 LPD 打印服务。

以下操作方式以 Windows 10 为例,Windows 11 操作相近,可自行摸索。

注:如果打印服务器和客户端同属于 Windows 10、11 系列,请优先将双方的网络配置文件设置为专有网络(专用网络),可以省掉很多问题。

一、安装  LPD 打印服务

在拟用作打印服务器(直连打印机)的电脑上打开“启用或关闭 Windows 功能”,启用“打印和文件服务”下的“LPD 打印服务”(无需勾选“LPR 端口监视器”,但选上也没有什么问题),点击确定安装此功能。

二、启用共享

为接下来要共享的打印机启用共享,此时需要记下共享名,稍后在其他机器添加打印机时会用到。

为达到最佳兼容性,共享名最好遵循以下规则:(1)全小写(录入时比较方便);(2)不要有空格;(3)限制在31个(含)字符内。

三、安装 LPR 打印端口

在打印客户端(其他电脑)上打开“启用或关闭 Windows 功能”,这次启用的是“打印和文件服务”下的“LPR 端口监视器”,点击确定安装此功能。

四、在客户机上添加打印机

(一)在“添加设备”对话框中直接点击“我所需的打印机未列出”,在下一步中选择“通过手动设置添加本地打印机或网络打印机”。

(二)选择“创建新端口”,端口类型选择“LPR Port”。

(三)在“添加 LPR 兼容打印机”对话框中,在“提供 LPD 的服务器的名称或地址”中输入打印服务器的 IP 地址,“服务器上的打印机名称或打印队列名称”中输入第二部中记下的共享名。

(四)在下一步中安装打印机驱动,可去厂商网站下载。

五、额外设置

安装完毕后,打开新增打印机的“打印机属性”,在“端口”中取消勾选“启用双向支持”,否则打印机可能没有反应,对于佳能 CAPT 协议的打印机而言,则可能报错“不支持打印机连接的端口”。

不过该方法也不是万能的,目前有观察到以下两种特殊情况:

一、HP Laserjet 1020 打印机的共享

作为一款经典型号,1020 打印机至今仍在生产新品,迄今已有 20 年的历史,其在官网上提供的“全功能软件和驱动程序”截止至 2016 年,安装程序也有很明显的 XP 年代的痕迹。

但是,如果用官方驱动进行 LPD 共享的话,无论如何无法成功,甚至连 Windows 自带的共享有时也困难重重,表现为可以成功添加打印机,可以成功发送打印任务,但打印机实际上不会有任何反应。

临时解决方案为:去 HP 官网下载官方的通用驱动(HP Universal Print Driver Series for Windows),将已添加的打印机驱动替换为这个通用驱动即可。(不保证 100% 修复,可能即使采用通用驱动也无法收到打印任务,最好还是能使用 Windows 自带的共享功能连接该型号的打印机)

此外,如果需要在 macOS 上添加此型号打印机的 LPD 共享连接,驱动程序选择 macOS 自带的 HP Laserjet 1022 即可(HP 官方没有提供 1020 的 macOS 驱动)。

二、LPD 服务报错找不到打印机

出现此错误时,其表象与上一个问题类似,即 LPD 共享可以正常添加,打印任务可以正常下达,但打印机不会有任何反应。

不同的是此时去客户机的事件查看器中,展开 Windows 日志-应用程序,会看到有级别为警告、来源为 Spooler-LPRSVC、事件 ID 为 2004 的记录,内容为:

行式打印机远程工具(LPR)服务无法将打印作业提交到主机(打印服务器 IP 地址)上的 Line Printer Daemon (LPD)打印机(打印机共享名),因为远程主机或打印机上的 LPD 服务正在拒绝打印作业。如果 LPD 服务正在处理其他打印作业则会发生这种情况。LPR 服务将重试打印,直到作业打印成功或用户取消打印作业为止。

在打印服务器上,可以看到级别为错误、来源为 Spooler-LPDSVC、事件 ID 为 4008 的记录,内容为(没有拍照所以为大致内容,来自对英语事件内容的翻译):

行式打印机远程工具(LPR)服务拒绝了来自(打印服务器 IP 地址)提供给(打印机共享名)的打印任务,因为指定的打印机不存在。请从客户端以正确的打印机名称重新发起打印任务。

此问题即便在客户机上添加 LPD 打印机时填写的共享名完全正确也可能发生(添加打印机时只校验服务是否可以连接,并不校验打印队列名称是否正确,所以请优先检查共享名称是否录入有误),临时解决方法为在服务器上给打印机换一个共享名,然后在客户机上重新添加 LPD 打印机,但也可能无效,具体原因仍有待探究。

三、其他一些添加共享打印机时问题的处理方案

(一)打印服务器为 Windows 10、客户端为 Windows 11,在服务器和客户机的网络配置文件均已设置为“专用网络”、打印服务器网络和共享设置已设置“启用文件和打印机共享”、“密码保护的共享”已经设置为“无密码保护的共享”且 Guest 账户没有被禁用的情况下,通过 \\IP 的 UNC 路径访问打印服务器提示“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。这些策略可帮助保护你的电脑免受网络上不安全设备或恶意设备的威胁”

临时处理方法:

1 在出现上述提示时,使用账号 Guest、密码为空的凭据登录,此时可以看到共享打印机,但尝试安装会提示“0x00000040 指定的网络名不再可用”

2 在组策略“计算机配置-管理模板-打印机”中,将“配置 RPC 连接设置”中的“用于传出 RPC 连接的协议”从“RPC over TCP”修改为“命名管道上的 RPC”。

3 使用 gpupdate /force 更新组策略(或重启一下)。

注:所有评论将在审核通过后显示,请不要在评论内容的任何位置出现链接,否则您的评论将被自动移入回收站,且永远不会被复审。

All comments will be available after being manually reviewed, please do not include any links anywhere in your comment, otherwise your comment will be automatically deleted and are not eligible for review.

2 条评论

  1. 2018年做存储的时候,经历过:
    Win7-Linux Samba,通;
    Linux-Linux Samba,通;
    Win7-Win7 SMB/CIFS(没错,这玩意应该叫SMB/CIFS,Samba只是Linux上为了连SMB/CIFS的一个服务端+客户端的名字),死活不通,看不到主机,看不到共享文件夹,GUEST没权限,用户名没权限,然后重启主机/客机就好使,然后重启主机/客机又坏了。
    就更别说 XP Win7 Win10之间的恩爱情仇了。
    好在大部分Mac/iPhone的用户都是傻子,完全不知道Mac/iPhone还能连SMB/CIFS,不然大坑更多。

    至于打印机,真的是新天坑。依赖SMB本身就不靠谱(除非服务端是一台跑着Samba的Linux但是大部分公司插打印机的都是Windows),LPD要安装驱动这事情对于一般用户上来就骂“我是Windows是免驱的”,然后驱动大概率不好使,用户再推开你说啥也不懂然后又在那抠网络共享,最后要不就是把打印机薅下来插他自己电脑上,要不就是拿个U盘跑去打印机电脑上打印。

    尤其是文章最后给打印机换名就能用的问题,我还真遇到过。

    1. 我也已经无话可说了,偏偏在办公环境下打印机共享还是一个硬需求,而且还要面对各种各样奇怪的软硬件条件。
      就比如之前我提到过的航天信息税控打印机,那个开票软件就只认本地打印机,对于 Windows 共享打印机直接装作没看见,当时如果我就了解到 LPD 打印共享就不用买硬件的共享器了,不过硬件共享器比起用一台 PC 共享耗电更低,且超级稳定,也算没白花钱。
      Samba 确实是 Windows 共享的 Linux 实现的名字,写的时候忘记了这一点,已对提及的位置进行修改,感谢指出。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注