我正在尝试枚举给定制造商的打印机型号。 Windows的``添加打印机''可以做到这一点-即,在左侧列表中选择制造商后,右侧将显示打印机型号列表。

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

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

最佳答案

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

内置驱动程序文件位于Driver Store中。例如,如果单击左 Pane 中的HP,则此INF中包含HP 910和915的驱动程序:

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

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

似乎没有公开的API来枚举Driver Store的内容,而是DISM command line tool can。它将解析所有正确的文件夹和INF文件(对于收件箱驱动程序if you supply the /all switch to /get-drivers),然后您只需要解析输出。例如。
Dism /online /get-drivers /all /format:list >drivers.txt

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

关于c++ - 如何在Windows上以编程方式获取给定制造商的所有打印机型号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42584834/

10-13 07:09