我在做什麼:如何在C#中獲得唯一/不同的打印機型號名稱?
我正在創建一個安裝在計算機上的所有打印機的數據庫。
使用PrinterSetting.PrinterName
和PrinterSettings.InstalledPrinters
我得到PrinterName
。
我也試過winapi Win32_Printer
但這和我上面的代碼有問題。
問題
的問題是,一臺打印機可通過像,HP LasetJet 1020(複製1),HP LasetJet 1020(副本2),依此類推HP LasetJet 1020不同的名稱來安裝。打印機名稱是用戶定義的,可以是任何。甚至可能有一臺打印機可以安裝2個不同的名稱,這兩個名稱之間沒有相似之處。
這就是爲什麼我認爲打印機型號名稱應該是唯一的,即使一臺打印機安裝的名稱不同也是如此。
問:
如何提取打印模式名稱?或者可以是Win_32中唯一,用戶不可編輯並可用於識別打印機的任何其他屬性。
或
可能是註冊表可能對此有所幫助。如果這個模型信息在註冊表中(很可能是它)在哪裏可以找到?
如果用戶有兩臺相同的打印機實際連接?通常,如果用戶使用兩個不同的名稱設置打印機,那是因爲他們希望/需要將它們視爲邏輯上不同的設備。 –
'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Print \ Printers'。在列出的打印機下查看這個子鍵 - 「PrinterDriverData」。 [我不確定這是否能解決您的問題。] AFAIK,打印機序列號/型號。沒有被供應商公開,'WIN32_Printers'會列出它作爲一個屬性。或者,你可以嘗試研究這個WIN32 API'SetupDiEnumDeviceInterfaces' –
@Damien_The_Unbeliever:沒問題。這是一種情況是可能的。但首先甚至知道有兩臺相同的打印機需要了解他們的模型。 –