获取打印服务器上的打印机名称

问题描述:

我们有一台打印服务器和大量的打印机。我们像这样访问它们:获取打印服务器上的打印机名称

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

...等等。

我现在需要该服务器上所有打印机的列表。到目前为止,我只能找到机器上本地安装的所有打印机。我发现这给了我只有本地打印机藏汉此而谷歌搜索:

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

其实我只需要在一个字符串数组服务器上所有打印机的名字,我甚至都不需要互动的对象,只有所有打印机的名称都是字符串。那可能吗?怎么样?

感谢您提前提供任何帮助!

+1

看看构造函数; '新的PrintServer(@“\\ print-server-name”);' – 2015-02-05 14:24:59

+0

你好Alex。感谢您的回复。不幸的是,这个解决方案只返回本地打印机。 – Kai 2015-02-05 14:57:28

+0

我在这里找到了另一个带有示例的网站:[link](http://www.encodedna.com/2013/04/show-printers-using-wmi.htm) 但是即使是包含此循环的示例: 'if(Convert.ToBoolean(Printers [“Network”]))//所有网络打印机。 { cmbNetworkPrinters.Items.Add(Printers [“Name”]); }' ......只给了我本地打印机。这可能是某种政策限制吗? – Kai 2015-02-12 14:32:38

获取所有InstalledPrinters

foreach (string printer in PrinterSettings.InstalledPrinters) 

使用WMI的Windows Management Instrumentation

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

你好侯赛因。感谢您的建议。 首先: 'new ManagementObjectSearcher(mos,query);' 返回“无法从System.Management.ManagementObjectSearcher转换为字符串”,所以我首先用“null”替换了“mos”。 然后这段代码也只返回本地机器上安装的打印机。 – Kai 2015-02-05 15:06:53