如何找到企业中的所有网络打印机?

时间:2010-03-31 21:16:08

标签: c# visual-studio-2008 active-directory printers

当我转到“打印机和传真”对话框时,我可以点击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

1 个答案:

答案 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);
            }
        }
    }