我们有以下场景:
- 30 台笔记本电脑
- 30 台 HP Laserjet P2015 打印机均通过 USB 连接
用户每天都可以坐在不同的地方,使用不同的打印机(尽管型号相同)。他们从虚拟端口上的一台打印机开始USB001然后,当他们改变位置并插入另一台打印机时(似乎并非总是如此),Windows 可能会创建一个新的打印机HP Laserjet P2015(第 1 份)并将其放在新端口上USB002。
当这种情况发生时,副本 1可以通过 USB002 端口打印到打印机,但另一台仍配置在USB001(即使它是相同的驱动程序,相同的类型,除了另一台物理打印机之外的所有内容都相同)也会出现错误,因为它据称不再连接。
理想的情况是:一个虚拟 USB 打印机端口,USB001总是打印在USB001无论你将其连接到哪台打印机。有什么方法可以强制计算机不这样做吗?
我的想法:
- 启用打印机池并让每台打印机在每个端口上打印,只有一台打印机应该只在那台打印机上打印,而忽略其余的;不起作用
- 以某种方式让组策略强制打印机使用相同的虚拟端口?但我认为这可能会阻止打印机一起工作
- 将打印机设置的注册表项保存为 .reg 文件,并在所有计算机启动时执行该文件?但我担心这可能会弄乱一切
答案1
由于 Windows 7 根据每个设备的序列号为其创建一个新的虚拟设备,因此我决定尝试通过更改打印机传递给 Windows 的序列号来伪装 Windows 选择不同的物理设备作为同一个设备,因此对于 Windows 来说,没有不同的设备被插入并且它将其映射到同一个虚拟端口上。
我查看了 PJL(打印机作业语言);发现以下命令
创建一个包含以下内容的文件;将其命名为 serial.txt (或任何名称)
ESC%-12345X@PJL SET SERVICEMODE=HPBOISEID
@PJL SET SERIALNUMBER=CNCABCDEF
@PJL SET FORMATTERNUMBER=ABCDEF
@PJL SET SERVICEMODE=EXIT
ESC%-12345X
然后我共享了打印机,以便我可以通过网络写入它,并将包含打印作业的文件复制到它
copy /b serial.prn \\workstation\share
重新启动打印机,这样它就会有新的假序列号,删除 Windows 中的旧打印机,重新安装它,这样就只剩下这个序列号的打印机了。当在所有打印机上完成此操作后,Windows 会将它们全部识别为同一台打印机,并立即将其配对,而无需创建副本或新的 USB 端口。