解决任何版本的 Windows 中与打印机相关的问题的故障排除步骤之一是删除已安装的打印驱动程序,然后重新安装驱动程序。这是一个域环境,驱动程序是从打印服务器中提取的。
我曾经需要在运行 Windows 7 Enterprise 64 位的用户系统上执行此操作。这些步骤不起作用:
从设备和打印机中删除打印机(显然不会删除驱动程序)。
执行上述操作,进入服务器属性,并尝试删除驱动程序(失败,出现“驱动程序正在使用”错误)。
打开一个空的
mmc
,添加Print Management
管理单元,并尝试执行上述操作(也失败并出现“驱动程序正在使用”错误)。在执行上述两项操作之前
sc stop spooler
进行操作。sc start spooler
设备管理器中看不到打印机。这是一台共享网络打印机,所以可能与它不在那里有关。
现在我知道可以通过停止后台处理程序服务来删除驱动程序,然后进入后台处理程序目录,以及删除注册表项。这很危险,我可能无法获得 Windows 认为是驱动程序一部分的所有内容。
我询问是否存在一个工具可以执行此操作,我只需选择有问题的驱动程序并将其删除。
注意:我通过 RDP 远程访问相关系统。
答案1
删除打印机驱动程序
在运行 Windows 7 或 Windows Server 2008 R2 的计算机上安装打印机驱动程序时,Windows 首先将打印机驱动程序安装到本地驱动程序存储区,然后从驱动程序存储区进行安装。
删除打印机驱动程序时,您可以选择仅删除打印机驱动程序或删除整个打印机驱动程序包。如果您删除打印机驱动程序,Windows 会卸载打印机驱动程序,但会将打印机驱动程序包保留在驱动程序存储中,以便您在某个时候重新安装驱动程序。如果您删除打印机驱动程序包,Windows 会从驱动程序存储中删除该包,从而将打印机驱动程序从计算机中完全删除。
要从服务器中删除打印机驱动程序,请按照以下步骤操作:
删除打印机驱动程序
打开打印管理。
在左侧窗格中,单击打印服务器,单击适用的打印服务器,然后单击打印机。
在中心窗格中,右键单击使用要删除的驱动程序的打印机,或将每台打印机使用的驱动程序更改为另一个驱动程序。
在左侧窗格中,单击打印服务器,单击适用的打印服务器,然后单击驱动程序。
在中心窗格中,右键单击驱动程序并执行以下操作之一:
要仅删除已安装的驱动程序文件,请单击删除。
要从驱动程序存储区中删除驱动程序包,从而从计算机中完全删除驱动程序,请单击删除驱动程序包。
要打开“打印管理”,单击开始, 指向管理工具,然后点击打印管理。
您必须具有管理凭据才能执行此任务。
打印架构和驱动程序支持(http://go.microsoft.com/fwlink/?LinkID=92657)
答案2
从设备管理器中删除驱动程序。
这似乎是更直接的方法。如果它仍然显示正在使用中,那么你遇到了一些恶意进程。我会使用 SysInternal 的 Autoruns 和 Procmon 进行进一步调查。
答案3
文章无法从 Windows 7 中删除打印机驱动程序有这样的程序:
- 删除打印机
Devices and Printers
- 停止打印后台处理程序
- 打开注册表项
HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors
- 重命名所有列出的打印处理器,例如
Winprint
等等Winprint.old
- 启动打印后台处理程序
- 删除
Print Management
MMC中有问题的驱动程序包 - 重新打开上述注册表位置
- 将所有打印处理器重命名为原始名称,例如将 Winprint.old 重命名为 Winprint
- 重新启动打印后台处理程序
- 安装新的打印机驱动程序
- 测试打印
如果此方法无效,并且您有打印机的安装介质,则另一个步骤可能是删除网络打印机,将打印机安装为本地打印机,然后将其转换为网络打印机。(请注意,将打印机安装为本地打印机可能已经处理了驱动程序,无需执行以下步骤。)
以下是将本地打印机转换为网络打印机的方法:
Printers
从控制面板打开小程序。- 右键单击本地打印机并选择
Properties
。 - 转到
Ports
选项卡。 - 单击
Add Port…
,选择Local Port
,然后单击New Port…
- 对于端口名称,请准确输入打印机的网络路径和共享名称。例如
\\Windows2008\HP LaserJet 5Si
,单击OK
,并确保选中此新端口旁边的复选框。 - 单击“确定”关闭打印机属性。
答案4
使用远程桌面连接时,你应该确保不是激活选项打印机本地设备和资源在 MSTSC.exe 中。
我没有解释,但是当激活此选项时,我们在尝试删除打印机和驱动程序时也遇到了问题(可能是因为管理员打印机和用户打印机之间共享的通用驱动程序应该被删除)。
对于客户端计算机上的网络打印机管理,我们使用打印用户界面(包装器rundll32 printui.dll,打印UI入口)。此命令必须从提升的命令提示符执行。
假设 FS-ZZ-TU-1 上有一台名为 PR-XX-03 的打印机:
要删除打印机,请使用此命令 /dn(/dn = 删除网络打印机):
printui.exe /dn /n "\\fs-zz-tu-1\pr-xx-03"
注意:您必须使用\服务器名称\队列名称格式,显示的名称设备和打印机为用户进行了“美化”。
为了随后删除它的驱动程序,您需要先停止打印机后台处理程序,因为打印机 DLL 是在后台处理程序进程中加载的,因此不能直接删除它们:
net stop spooler
net start spooler
之后,您可以通过指定打印机型号来删除驱动程序(/dd = 删除驱动程序)
printui.exe /dd /m "Lexmark T642 (MS)"
对于任意打印用户界面命令中,您还可以指定选项 /q,这将隐藏任何错误消息(例如 printui.exe /dn /n "\fs-zz-tu-1\pr-xx-03" /q)。当您想要自动执行这些任务时,这会很有用。