2010-03-31 65 views
4

当我转到打印机和传真对话框时,我可以单击Add a printer链接,选择Network Printer,然后Find a printer in the directory。从那里我得到一个对话框,可以让我找到企业中的所有打印机。如何找到企业中的所有网络打印机?

我需要用我的代码找到所有的网络打印机。我怎样才能做到这一点?

请注意,我不是在谈论连接到我的PC的网络打印机,而是企业中的所有网络打印机(我的工作场所有近4000台打印机)。

P.S. PrintServer()。GetPrintQueues仅返回连接到计算机的打印机。

P.P.S.下面是我想要的一个简短的视频:http://www.angryhacker.com/toys/FindAllPrinters/FindAllPrinters.html

回答

4

DirectorySearche [R与 (objectClass=printer) (objectClass=printQueue)过滤器应该做的伎俩。

using (var e = new DirectoryEntry("LDAP://DC=example,DC=com")) 
    using (var s = new DirectorySearcher(e)) { 
     s.Filter = "(objectClass=printQueue)"; 

     using (var c = s.FindAll()) { 
      WL("Returned {0} objects", c.Count); 
      foreach (SearchResult r in c) { 
       WL("{0}", r.Path); 
      } 
     } 
    } 
+0

不,它没有返回任何内容。如果没有过滤器,它只会返回交换电子邮件组的群组,但根本没有打印机。 – AngryHacker 2010-04-02 16:54:58

+0

是的,我找到了同样的东西。谢谢你的帮助。 – AngryHacker 2010-04-03 04:36:19