Si alguna vez quieres hacer una impresión a escala masiva, es necesario encontrar todas las impresoras en Active Directory, no sólo las que están conectados a su ordenador. Por extraño que parezca, el método para encontrar no es trivial. El código esta en C# y funciona en Visual Studio 2008.
private void FindAllPrinters() { string[] wantedProps = { "name", "servername", "printername", "drivername", "shortservername", "location" }; var ds = new DirectorySearcher { Filter = "(objectClass=printqueue)" }; foreach (SearchResult sr in ds.FindAll()) { Debug.WriteLine(sr.Path); ResultPropertyCollection rpc = sr.Properties; // usa rpc.PropertyNames en lugar de wantedProps si quieres // conocer mas acerca de las impresoras foreach (string property in wantedProps) { foreach (object value in rpc[property]) Debug.WriteLine(string.Format("\t{0}: {1}", property, value)); } } }
Ten en cuenta que es necesario agregar una referencia a System.DirectoryServices. También hay que tener en cuenta que el código busca todas las impresoras de tu dominio. Si tienes muchos dominios en la organización, tendrás que obtener la lista y crear una instancia de clase DirectorySearcher por separado para cada uno.
Entradas relacionadas