Windows使用传统方式(SMB协议)连接共享打印机,经常因为各种莫名其妙的问题而无法连接,特别是Win10/11在更新补丁后,经常报错(如0x0000011B等错误)难以解决;此外,近年微软的SMB协议常爆出高危漏洞。

在此,介绍一种抛弃传统的SMB文件和打印机共享,改用LPD/LPR方式来共享打印机。

一、服务端配置

服务端是直接连接打印机的电脑

1. 装好打印机驱动

在服务端先装好打印机的驱动程序:

服务端装好了打印机驱动

记下此打印机的名称,如笔者使用的“HP LaserJet 1020”,在客户端添加打印机时会用到。

2. 安装LPD

打开“控制面板”-“程序”:

控制面板-程序

点击“启用或关闭Windows功能”,勾选“打印和文件服务”下的“LPD打印服务”,并确定:

勾选“LPD打印服务”安装

二、客户端配置

1. 客户端可以先预装好打印机驱动

如笔者使用的HP LaserJet 1020打印机,直接点安装,打印机驱动就会预装到系统的驱动程序库里,无需等待其连接完成:

预装打印机驱动

2. 安装LPR

同服务端一样,打开“启用或关闭Windows功能”,但勾选的是“LPR端口监视器”:

安装“LPR端口监视器”

3. 添加打印机

打开“控制面板”-“查看设备和打印机”:

控制面板-查看设备和打印机

点击“添加打印机”。

对于Win10系统,点击“我所需的打印机未列出”:

添加打印机(Win10)

再选择“通过手动设置添加本地打印机或网络打印机”:

添加打印机(Win10)

对于Win7系统,选择“添加本地打印机”:

添加打印机(Win7)

选择“创建新端口”,端口类型选择“LPR Port”:

添加打印机(创建新端口)

下一步填上服务端的地址和打印机名称(就是前一节里要记住的):

添加打印机(填上服务端的地址和打印机名称)

选择打印机驱动程序,笔者已事先预装好打印机驱动,所以在此直接选择即可;如之前未预装驱动,则可点击“从磁盘安装”浏览到驱动程序的目录来安装:

添加打印机(选择打印机驱动)

然后在客户端的打印机列表里就会出现该新添加的打印机了:

客户端出现了新装的打印机

4. 关闭双向支持

如果不关闭双向支持,则打印时可能出现没有反应的情况。

在新添加的打印机图标上点击右键-“打印机属性”,在新的对话框里点“端口”,取消勾选下面的“启用双向支持”:

关闭双向支持

到此就全部设置完成了。

三、其他说明

1. 关于LPD和LPR

LPD指Line Printer Daemon,源自UNIX操作系统的网络打印服务,是一个运行在服务器端的守护进程;LPR指Line Printer Requestor,通常运行在需要打印的客户端。

网上很多教程说服务端和客户端都需要同时安装“LPD打印服务”和“LPR端口监视器”,但其实服务端和客户端只需要分别安装“LPD打印服务”和“LPR端口监视器”即可。

2. LPD监听端口和防火墙配置

服务端安装了的LPD后,会监听TCP 515端口:

监听TCP 515

Windows防火墙上也会出现名为“LPD”服务的入站规则,开放了TCP 515端口:

防火墙“LPD服务”规则
防火墙“LPD服务”规则

如需限制仅允许某些特定的客户端连接,则可以配置此规则的作用域,填写远程IP地址即可。

四、总结

使用LPD/LPR共享打印机,能够解决传统Windows打印机共享遇到的难以解决的问题,但缺点是需要手动安装LPD/LPR组件,客户端还需手动安装打印机驱动。但相比SMB共享打印机,不容易出现各种莫名其妙的无法连接问题,值得一试。