2015-02-05 2 views
0

у нас есть сервер печати и множество принтеров. Мы обращаемся к ним следующим образом:Получите имена принтеров на printserver

\\print-server-name\printer1 
\\print-server-name\printer1_color 
\\print-server-name\printer2 

... и т.п.

Теперь мне нужен список всех принтеров на этом сервере. До сих пор я мог найти только все принтеры, установленные локально на машине. Я нашел это в то время погуглит, который дал мне только локальные принтеры Aswell:

PrintServer lps = new PrintServer(); 
PrintQueueCollection prQueue = lps.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Connections }); 
liServerPrinterNames = (from printer in prQueue select printer).ToList(); 

На самом деле мне нужно только имена всех принтеров на сервере в виде массива строк, не нужно даже объекты для взаимодействия, только имена всех принтеров в виде строки. Это возможно? Как?

Спасибо за любую помощь заранее!

+1

Посмотрите на конструкторах; 'new PrintServer (@" \\ print-server-name ");' –

+0

Привет, Алекс. Спасибо за ваш ответ. К сожалению, это решение вернуло только локальные принтеры. – Kai

+0

Я нашел еще один сайт с примером здесь: [link] (http://www.encodedna.com/2013/04/show-printers-using-wmi.htm) Но даже пример там, включая этот цикл: 'if (Convert.ToBoolean (Принтеры [" Network "])) // ВСЕ СЕТЕВЫЕ ПРИНТЕРЫ. { cmbNetworkPrinters.Items.Add (Принтеры ["Name"]); } ' ... дал мне только локальные принтеры. Может ли это быть каким-то политическим ограничением? – Kai

ответ

0

Получает все InstalledPrinters

foreach (string printer in PrinterSettings.InstalledPrinters) 

Использование WMI Инструментарий управления Windows

SelectQuery query = new SelectQuery("SELECT * FROM Win32_Printer"); 
    ManagementObjectSearcher mos= new ManagementObjectSearcher(mos, query); 
    System.Management.ManagementObjectCollection moc= mos.Get(); 
    foreach (ManagementObject Printers in moc) 
     Printers["Name"];    //GetPrinterName 
} 
+0

Привет, Hüseyin. Спасибо за ваше предложение. Прежде всего: 'new ManagementObjectSearcher (mos, query);' return "не может преобразовать из System.Management.ManagementObjectSearcher в строку", поэтому я сначала заменил "mos" на "null". Затем этот кусок кода также вернул мне только установленные принтеры на локальной машине. – Kai

 Смежные вопросы

  • Нет связанных вопросов^_^