문제

When I go to Printers and Faxes dialog, I can click the Add a printer link, select Network Printer, then Find a printer in the directory. From there I get a dialog box which lets me find ALL printers in the enterprise.

I need to find all the network printers with my code. How can I do this?

Note that I am not talking about network printers that are connected to my PC, but all network printers in the enterprise (my workplace has almost 4000 printers).

P.S. PrintServer().GetPrintQueues only returns printers attached to the computer.

P.P.S. Here is a short video of what I want: http://www.angryhacker.com/toys/FindAllPrinters/FindAllPrinters.html

도움이 되었습니까?

해결책

DirectorySearcher with a filter for (objectClass=printer) (objectClass=printQueue)should do the trick.

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);
            }
        }
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top