如何删除 Windows 中不存在的打印机?

Hag*_*zen 2 windows-7 network-printer wmi

一些网络打印机已从打印服务器中删除,我希望通过脚本(例如objPrinter.delete_在 vbs 中使用)从任何仍在引用它们的客户端自动删除它们;最好,我想真正知道在这些情况下我要删除哪些打印机并自动连接适当的替换打印机。如果我能首先阅读此类已停产的打印机列表,这将不难。

GUI 中的情况是打印机仍显示在“设备和打印机”下,打印机符号仅显示默认打印机图标,呈灰色显示,旁边显示黄色警告三角形。但是打印机没有被列出,例如 WMI 查询“ SELECT * FROM Win32_Printer”。有没有其他查询可以成功?

har*_*ymc 5

要通过命令行而不使用 GUI 删除网络打印机,可以通过更新注册表来实现。

以下两个注册表项包含已安装的打印机定义:

HKEY_CURRENT_USER\Printers\Connections
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Providers\LanMan Print Services\Servers\Printers
Run Code Online (Sandbox Code Playgroud)

您需要找到上面包含要删除的网络打印机的子项的名称。一旦你知道他们的名字,这也成为一种检查当前是否安装了特定打印机的方法。删除子项,然后重新启动以验证打印机是否保持删除状态。

这里有一些要点:

  1. 可能需要停止 Print Spooler 服务。
  2. 打印机队列必须为空,位于文件夹 中 C:\Windows\System32\spool\PRINTERS\。如果打印队列中有项目,则无法移除打印机。另请参阅文章如何在 Windows 中强制清除打印队列
  3. 删除打印机的 GUI 方式是以管理员身份运行 printui /s /t2,选择打印机,单击删除按钮,选中“删除驱动程序和驱动程序包”,然后单击确定。

更多详细信息可以在文章 修复无法删除或删除 Windows 中的网络打印机中找到