У меня есть приложение, которое позволяет пользователю выбрать принтер перед печатью. Мне нужно иметь возможность, используя информацию, возвращаемую из диалогового окна выбора принтера .Net, найти способ связи через SNMP напрямую с принтером. Одним из требований для моего приложения является то, что оно не отправляет никаких заданий на печать на принтер, когда принтер находится в режиме паузы или застрял или находится в автономном режиме или из бумаги и т. Д. Я могу получить эту информацию только через SNMP для типа принтера, который у меня есть.
Я использовал запрос WMI для получения информации о принтере, а затем выводил канал связи с этим принтером, используя значения ShareName и ServerName в этом запросе WMI. Это работало более года.
Недавно сетевая команда переместила мое приложение с сервера Windows 2003 на сервер Windows 2008 R2. С приложением в новом доме 2008 года значения ServerName и ShareName в запросе WMI всегда возвращаются пустыми, что делает невозможным непосредственное взаимодействие с принтером с использованием моего существующего кода.
У кого-нибудь еще есть другой способ связи с принтерами напрямую, только если пользователь выбирает принтер в диалоговом окне выбора принтера .Net? Для целей этого приложения мы можем ожидать, что принтер всегда будет одного типа и всегда будет подключен к сети.
Вот запрос WMI, который я использовал:
"SELECT * from Win32_Printer WHERE Name LIKE '%MyPrinter'"
Ценю это.