Как я могу найти все сетевые принтеры на предприятии? - PullRequest
4 голосов
/ 01 апреля 2010

Когда я захожу в диалоговое окно «Принтеры и факсы», я могу щелкнуть ссылку 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 Ответ

4 голосов
/ 01 апреля 2010

DirectorySearche r с фильтром для (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);
            }
        }
    }
...