如何在C#中获得唯一/不同的打印机型号名称?

时间:2012-06-19 12:49:06

标签: c# .net winapi printer-properties

我要做的是:

我正在创建一台安装在计算机上的所有打印机的数据库。

使用PrinterSetting.PrinterNamePrinterSettings.InstalledPrinters我收到PrinterName

我也尝试了winapi Win32_Printer但是这和我上面的代码有问题。

问题

问题在于,可以使用HP LasetJet 1020,HP LasetJet 1020(Copy 1),HP LasetJet 1020(Copy 2)等不同名称安装单个打印机。打印机名称是用户定义的,可以是任何名称。甚至可能是一台打印机可以通过2个不同的名称安装,它们的名称之间没有相似之处。

这就是为什么我认为即使一个打印机以不同的名称安装,打印机型号名称也应该是唯一的。

问题:

如何提取该打印机模式名称?或者可能是Win_32中任何其他属性,它是唯一的,用户无法编辑,可用于识别打印机。

OR

可能是注册表可以对此有所帮助。如果这个模型信息在注册表中(最有可能的话)可以在哪里找到它?

2 个答案:

答案 0 :(得分:1)

打印机驱动程序名称和端口名称的组合形成特定打印机的唯一唯一标识符。如果两个打印机之间的驱动程序和端口名称匹配,那么这些打印机都代表相同的物理(或虚拟)硬件。没有其他财产能够可靠地识别它们。

答案 1 :(得分:0)

我会用WMI解决这个问题,看起来可能会有更多信息。

CodeProject有一个不错的演练,但我不能说我已经专门处理了这个问题,只是想我会指出你的方向。

http://www.codeproject.com/Articles/80680/Managing-Printers-Programatically-using-C-and-WMI