迟到了,但也许可以帮助部分答案……如果您使用的是 .inf 文件。在这种情况下是针对本地打印机,
>>>> 要在没有任何向导的情况下执行此操作,必须对驱动程序进行签名。
视窗 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"
- 对于安装,您只需要一个命令。用usb可以改“com1”,选择最常用的“usb001”。
卸载:
要卸载打印机,您需要 3 个命令并严格遵循以下顺序:
- 首先,您需要删除您可以在“设备和打印机”中看到的所有具有该名称的打印机:
RUNDLL32 PRINTUI.DLL,PrintUIEntry /dl /n "Printer Name" /h "Intel"
- 第二个命令是删除打印机驱动程序:
RUNDLL32 PRINTUI.DLL,PrintUIEntry /dd /m "driver model name" /h "Intel"
. 之后你就看不到打印机和驱动了,但是如果你拔掉usb设备再插上驱动会自动安装。这是因为windows添加了驱动安装包C:\Windows\System32\DriverStore\FileRepository
,我们需要用第三条命令卸载它。
- 第三个命令将删除安装驱动程序时由 windows 创建的 oem*.inf。要完成此任务,您需要 2 个命令,第一个是搜索 Windows 为您创建的 oem*.inf 的名称:使用此
pnputil.exe -e
显示所有 oem*.inf 并使用手中的名称使用此pnputil.exe -f -d oem5.inf
(更改oem5.inf 对应你的 inf 文件)
我使用 C 和 Visual C++6 以编程方式完成了这些任务 - 使用此命令,除了搜索 oem*.inf 名称,您需要在 .inf 下解析所有 .inf 文件C:\Windows\Inf\
。另一个自动化参数是使用 /q 在不通知用户的情况下运行。
使用 cli 安装时需要小心...不要为同一台打印机执行两次安装,Windows 会创建一个随机名称,就像您安装打印机 B 一样,Windows 将重命名为打印机 B (copy_A) 或其他名称如果打印机 B 已经存在。如果您需要卸载,则需要先删除两台打印机,然后再执行第二条命令卸载驱动程序。
对于需要更改参数的远程打印机,请参阅http://technet.microsoft.com/en-us/library/ee624057.aspx
另请参阅有关 devcon 的代码https://code.msdn.microsoft.com/windowshardware/DevCon-Sample-4e95d71c