【问题标题】:How can I locate all the network printers in the enterprise?如何定位企业中的所有网络打印机?
【发布时间】:2010-03-31 21:16:07
【问题描述】:

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

我需要使用我的代码查找所有网络打印机。我该怎么做?

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

附: PrintServer().GetPrintQueues 只返回连接到计算机的打印机。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 不,过滤器不返回任何内容。如果没有过滤器,它只会返回大量交换电子邮件组,但根本没有打印机。
    • 是的,我发现了同样的事情。感谢您的帮助。
    • 如果这不能解决您的问题,您为什么接受它作为答案?这会让以后调查此事的人感到困惑,并且可能会阻止可以提供帮助的人这样做。
    • @Brad - 您必须按时间戳顺序阅读 cmets、编辑和接受(从悬停在复选框上);我最初列出了不存在的 objectClass=printer;切换到 objectClass=printQueue 并添加示例代码得到了他需要的列表(此时它被接受了)。
    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2013-06-02
    相关资源
    最近更新 更多