在Windows 7上使用PrintUI更改打印机驱动程序

时间:2011-04-04 18:56:25

标签: windows-7 printing

我在整个建筑物中安装了大约200个相同的制造/型号本地打印机。问题是默认安装在客户端上放置了两个驱动程序,但将错误的驱动程序设置为默认值。要手动更改它,我右键单击打印机,选择“打印机属性”,单击“高级”选项卡并更改驱动程序选择,然后单击“确定”。

我需要对所有其他人执行此操作,但希望不必手动访问每台计算机。我查看了一堆WMI脚本,以及使用PrintUI.exe(printui.dll)的示例。我可以使用以下printui语法更改驱动程序选择:

printui / Xs / n“hp LaserJet 8888 PCL 5”DriverName“hp LaserJet 8890 PCL 5”

这似乎有效。但问题是,一旦我运行此命令,下次右键单击打印机并选择“打印机属性”时,系统会提示我使用向导重新安装打印机驱动程序。是否有更好的方法或解决方法?

2 个答案:

答案 0 :(得分:1)

很晚,但也许可以帮助......如果您使用.inf文件。

<强>&GT;&GT;&GT;&GT;要在没有任何向导的情况下执行此操作,必须对驱动程序进行签名。

Windows 7

安装:

  • 第一个命令安装:RUNDLL32 PRINTUI.DLL,PrintUIEntry /if /b "Printer name" /f "driver.inf" /r "com1" /m "driver model name" /h "Intel"
  • 第二个命令集默认打印机:RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "Printer name"
  • 对于安装,您只需要一个命令。可以改变&#34; com1&#34;如果您使用USB,请选择最常见的&#34; usb001&#34;。

卸载:

要卸载打印机,您需要3个命令并严格遵循以下顺序:

  1. 首先,您需要删除所有可以在&#34;设备和打印机中看到的名称的打印机&#34;:RUNDLL32 PRINTUI.DLL,PrintUIEntry /dl /n "Printer Name" /h "Intel"
  2. 第二个命令是删除打印机驱动程序:RUNDLL32 PRINTUI.DLL,PrintUIEntry /dd /m "driver model name" /h "Intel"。在此之后您无法看到打印机和驱动程序,但如果您拔下USB插件并重新插入,驱动程序将自动安装。这是因为Windows将驱动程序安装包添加到C:\Windows\System32\DriverStore\FileRepository,我们需要使用第三个命令将其卸载。
  3. 第三个命令将删除安装驱动程序时由Windows创建的oem * .inf。要完成此任务,您需要2个命令,第一个是搜索为您创建的窗口中的oem * .inf的名称:使用此pnputil.exe -e显示所有oem * .inf并使用手中的名称使用此命令pnputil.exe -f -d oem5.inf(更改oem5.inf的名称以对应于您的inf文件)
  4. 我使用此命令以编程方式执行了操作,但搜索您需要解析C:\Windows\Inf\下所有.inf文件的oem * .inf名称除外。

    使用cli安装时需要注意的行为...不要为同一台打印机执行两次安装,windows会创建一个随机名称,就像你安装打印机B一样,windows会重命名为打印机B(copy_A)如果打印机B已经存在,则为其他内容。如果您需要卸载,则需要先删除两台打印机,然后再转到第二个命令卸载驱动程序。

    有时最好全部卸载并重新安装。

    另请参阅有关devcon的代码:https://code.msdn.microsoft.com/windowshardware/DevCon-Sample-4e95d71c

    有关命令的详细信息: http://www.robvanderwoude.com/2kprintcontrol.php

答案 1 :(得分:0)

我在Windows XP上尝试过你的命令行,它对我有用而不会弹出任何打印机向导。我使用了两个驱动程序,它们是XP操作系统本身的一部分。这是我用的 -

rundll32 printui.dll PrintUIEntry / Xs / n“HP Color LaserJet 4550 PCL”DriverName“HP C LaserJet 4500-PS”

也许您可能想再次查看它。可能Win7有一些额外的东西,PrintUI没有做对吗?

然而,一句谨慎。以这种方式切换队列上的驱动程序时,将丢失旧队列的设置。如果这样可以,那么走这条路就没问题了。

现在,如果您只想更改每个客户端上的默认打印队列,则应使用此命令行 - 请将“HP Color LaserJet 4550 PCL”设置为您使用的队列 -

rundll32 printui.dll,PrintUIEntry / y / n“HP Color LaserJet 4550 PCL”

如果有帮助,请告诉我