Windows 上的幻影打印机

Windows 上的幻影打印机

我有几个 Windows 2012 R2 服务器,它们都在Control Panel> Hardware>中显示 300 - 400 台打印机Devices and Printers。它们还在设备管理器中显示为打印队列。其中许多是重复的 - 设备和打印机中的列表如下所示:

Printer_A on Print_Server_1
Printer_A on Print_Server_1
Printer_A on Print_Server_1
Printer_A on Print_Server_1
Printer_A on Print_Server_1
Printer_B on Print_Server_1
Printer_B on Print_Server_1
Printer_X on Print_Server_2
Printer_X on Print_Server_2
Printer_X on Print_Server_2
Printer_X on Print_Server_2

我可以通过选择打印机并单击“删除设备”来删除“设备和打印机”中的打印机。打印机似乎已被删除,但在我注销并重新登录后又会显示出来。

当我运行这个程序时,我看到一个空列表(0 台打印机):

c:\windows\system32\rundll32.exe printui.dll,PrintUIEntry /ge

PowerShell cmdletget-printer仅列出打印机,就像这样:

cscript c:\windows\system32\printing_admin_scripts\en-us\prnmngr.vbs -l

我看到这个键下有相同的五台打印机:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers

我看到这个键下有 23 个连接(没有重复):

HKEY_CURRENT_USER\Printers\Connections

我如何才能确定这数百台打印机来自何处,以便可以永久删除它们?这些服务器在 RDS 中进行代理 - 它们能否以某种方式相互获取这些打印机?

答案1

显然,如果服务器具有 RDS 角色并且正在使用启用了客户端渲染的远程打印服务器,则这是 Windows Server 的问题。

一个简单的解决方法是添加注册表项,以启用 15 分钟的打印机列表修剪,并在注销时自动删除:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider]
"InactiveGuidPrinterAge"=dword:00000384
"ActiveGuidPrinterAge"=dword:00000384
"InactiveGuidPrinterTrim"=dword:00000384
"RemovePrintersAtLogoff"=dword:00000001

添加上述条目后,启动打印后台处理程序服务并开始自动定期修剪打印机。

相关内容