Как получить уникальное / уникальное имя модели принтера в C#?

Что я пытаюсь сделать:

Я создаю базу данных всех принтеров, установленных на компьютере.

С помощью PrinterSetting.PrinterName а также PrinterSettings.InstalledPrinters я получаю PrinterName,

Я также попробовал Winapi Win32_Printer но у этого и моего кода выше есть проблема.

проблема

Проблема заключается в том, что один принтер может быть установлен под разными именами, такими как HP LasetJet 1020, HP LasetJet 1020 (копия 1), HP LasetJet 1020 (копия 2) и так далее. Имя принтера определяется пользователем и может быть любым. Даже может быть один принтер может быть установлен на 2 таких разных имени, что они не имеют сходства между своими именами.

Вот почему я считаю, что имя модели принтера должно быть уникальным, даже если один принтер установлен под разными именами.

Вопрос:

Как извлечь это имя режима принтера? или может быть любым другим свойством в Win_32, которое является уникальным, недоступным для редактирования пользователем и может использоваться для идентификации принтеров.

ИЛИ ЖЕ

Может быть реестр может быть полезным для этого. Если информация о модели находится в реестре (скорее всего, так и будет), где ее можно найти?

2 ответа

Решение

Комбинация имени драйвера принтера и имени порта образует единственный уникальный идентификатор для конкретного принтера. Если имена драйверов и портов совпадают для двух принтеров, оба этих принтера представляют один и тот же физический (или виртуальный) компонент оборудования. Никаких других свойств достоверно их не идентифицировать.

Я бы занялся этим с помощью WMI, похоже, в этом случае немного больше информации.

На CodeProject есть достойное прохождение, но я не могу сказать, что я имел дело именно с этим, просто подумал, что укажу вам в этом направлении.

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

Другие вопросы по тегам