2017-03-03 46 views
0

我想枚舉給定製造商的打印機型號。 Windows'添加打印機'以某種方式能夠做到這一點 - 即當在左側列表中選擇製造商時,在右側顯示打印機型號列表。如何以編程方式獲取給定製造商在Windows上的所有打印機型號?

我熟悉EnumPrinters和EnumPrinterDrivers API,但相關結構(PRINTER_INFO *和DRIVER_INFO *)都不包含打印機型號。 DRIVER_INFO *確實包含製造商的名稱,但我不確定在哪裏可以找到相應驅動程序支持的打印機型號。

任何建議和指向在線文檔將不勝感激。 謝謝。

回答

1

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 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但事實證明,這只是在窗戶周圍PnPUtil.exe工具不能枚舉內置驅動程序的包裝。)

+0

感謝您的信息。我現在可以在位於FileRepository \ prn *文件夾的INF文件中看到所有內置驅動程序/打印機模型。我希望有一個API可以查詢這些文件並返回在其中找到的打印機型號列表。我想我可以解析所有prn *文件夾中的所有INF文件。但我不確定是否所有打印機驅動程序都位於prn *文件夾中。你知道是否有關於這個主題的官方文檔(例如文件夾命名約定等)?我不需要安裝驅動程序。我只需要一個由製造商分組的打印機型號列表。 – bdristan

+0

我找不到公共API,但編輯了我的答案以添加一些可枚舉Driver Store的工具。 –

相關問題