Как программно получить все модели принтеров для данного производителя на Windows?

Я пытаюсь перечислить модели принтеров для данного производителя. Windows «Добавить принтер» каким-то образом может это сделать — то есть, когда в левом списке выбран производитель, список моделей принтеров отображается справа.

Я знаком с EnumPrinters и EnumPrinterDrivers API, но ни одна из связанных структур (PRINTER_INFO * и DRIVER_INFO *) не содержит моделей принтеров.
DRIVER_INFO * содержит название производителя, но я не уверен, где найти модели принтеров, которые поддерживает соответствующий драйвер.

Будем благодарны за любые предложения и ссылки на онлайн-документы.
Благодарю.

0

Решение

EnumPrinterDrivers только перечисляет установлены драйверы принтера. В диалоговом окне «Добавить принтер» отображаются доступные драйверы, включая встроенные драйверы, которые еще не установлены.

Файлы встроенного драйвера находятся в Магазин драйверов. Например, если вы нажмете на HP на левой панели, драйверы для HP 910 и 915 находятся в этой INF:

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

Чтобы установить эти, вы можете попробовать старый API настройки или новый API установщика Windows.

Кажется, не существует общедоступного API для перечисления содержимого хранилища драйверов, но Инструмент командной строки DISM может. Он проанализирует все нужные папки и файлы INF (для драйверов входящих сообщений если вы поставите переключатель / all в / get-drivers) и тогда вам просто нужно разобрать вывод. Например.

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

(Я предложил DriverStore Explorer но оказывается, что это просто оболочка для Windows pnputil.exe инструмент, который не может перечислить драйверы входящих сообщений.)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]