Имам приложение, което позволява на потребителя да избере принтер, преди да печата. Трябва да мога, като използвам информацията, върната от диалоговия прозорец за избор на .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'"
Оценявам го.