1

我正在尝试枚举给定制造商的打印机型号。Windows 的“添加打印机”以某种方式能够做到这一点 - 即,当在左侧列表中选择制造商时,右侧会显示打印机型号列表。

我熟悉 EnumPrinters 和 EnumPrinterDrivers API,但相关结构(PRINTER_INFO* 和 DRIVER_INFO*)都不包含打印机型号。DRIVER_INFO* 确实包含制造商的名称,但我不确定在哪里可以找到相应驱动程序支持的打印机型号。

任何关于在线文档的建议和指针将不胜感激。谢谢。

4

1 回答 1

2

EnumPrinterDrivers 仅枚举已安装的打印机驱动程序。添加打印机对话框显示可用的驱动程序,包括尚未安装的内置驱动程序。

内置驱动程序文件位于Driver Store中。例如,如果您单击左侧窗格中的 HP,HP 910 和 915 的驱动程序在此 INF 中:

C:\Windows\System32\DriverStore\FileRepository\prnhp003.inf_amd64_4480210763997eb4\prnhp003.inf

要安装这些,您可以尝试旧的Setup API或新的Windows Installer API

似乎没有用于枚举驱动程序存储内容的公共 API,但DISM 命令行工具可以. 它将解析所有正确的文件夹和 INF 文件(对于收件箱驱动程序,如果您将 /all 开关提供给 /get-drivers),然后您只需要解析输出。例如

Dism /online /get-drivers /all /format:list >drivers.txt

(我确实建议过DriverStore Explorer,但事实证明这只是 Windows PnPUtil.exe工具的一个包装,它无法枚举收件箱驱动程序。)

于 2017-03-05T21:14:54.757 回答