4

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

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

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

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

PPS 这是我想要的简短视频:http ://www.angryhacker.com/toys/FindAllPrinters/FindAllPrinters.html

4

1 回答 1

4

带有过滤器的DirectorySearcher应该可以解决问题。(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);
            }
        }
    }
于 2010-04-01T01:19:58.213 回答