2

我正在尝试做的事情:

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

使用PrinterSetting.PrinterNamePrinterSettings.InstalledPrinters我得到PrinterName.

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

问题

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

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

问题:

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

或者

可能是注册表可以对此有所帮助。如果此模型信息在注册表中(很可能会在)在哪里可以找到?

4

2 回答 2

1

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

于 2012-06-19T14:22:12.790 回答
0

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

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

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

于 2012-06-19T13:25:54.693 回答