Как получить уникальное / уникальное имя модели принтера в 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