我试图枚举给定制造商的打印机型号。Windows 'Add Printer‘可以这样做--也就是说,当制造商在左边的列表中被选中时,打印机型号的列表就会显示在右边。
我熟悉EnumPrinters和EnumPrinterDrivers API,但是相关的结构(PRINTER_INFO*和DRIVER_INFO*)都不包含打印机模型。DRIVER_INFO*确实包含制造商的名称,但我不知道在哪里可以找到相应的驱动程序支持的打印机型号。
任何对在线文档的建议和提示都将不胜感激。谢谢。
发布于 2017-03-05 21:14:54
EnumPrinterDrivers只枚举已安装的打印机驱动程序。“添加打印机”对话框显示可用的驱动程序,包括尚未安装的内置驱动程序。
内置驱动程序文件在驱动程序存储中。例如,如果单击左侧窗格中的HP,则HP 910和915的驱动程序位于此INF中:
C:\Windows\System32\DriverStore\FileRepository\prnhp003.inf_amd64_4480210763997eb4\prnhp003.inf要安装这些,您可以尝试旧的安装API或新的Windows安装程序API。
似乎没有一个公共API来枚举驱动程序存储内容,而是DISM命令行工具。它将解析所有正确的文件夹和INF文件(用于收件箱驱动程序如果您向/get-驱动程序提供/all开关),然后只需要解析输出。例如。
Dism /online /get-drivers /all /format:list >drivers.txt(我确实建议使用DriverStore资源管理器,但事实证明,这只是Windows PnPUtil.exe工具的一个包装器,无法枚举收件箱驱动程序。)
https://stackoverflow.com/questions/42584834
复制相似问题