当我转到“打印机和传真”对话框时,我可以点击Add a printer
链接,选择Network Printer
,然后选择Find a printer in the directory
。从那里我得到一个对话框,让我找到企业中的所有打印机。
我需要使用我的代码找到所有网络打印机。我怎么能这样做?
请注意,我不是在谈论连接到我的电脑的网络打印机,而是企业中的所有网络打印机(我的工作场所有近4000台打印机)。
P.S。 PrintServer()。GetPrintQueues仅返回连接到计算机的打印机。
P.P.S。以下是我想要的简短视频:http://www.angryhacker.com/toys/FindAllPrinters/FindAllPrinters.html
答案 0 :(得分:4)
(objectClass=printer)
(objectClass=printQueue)
过滤器的DirectorySearche r应该可以解决问题。
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);
}
}
}