¿Cómo obtener System.Printing.PrintServer.GetPrintQueues para devolver la lista de la cola de impresión desde el servidor remoto?
Estoy tratando deobtener una lista de colas de impresión disponibles en un servidor remoto.
En última instancia, esto tendrá que realizarse desde ASP.NET, pero por ahora me conformaría con una aplicación de consola para funcionar.
Cuando creo una instancia de laSystem.Printing.PrintServer clase usando la ruta a un servidor remoto Puedo obtener información básica sobre el servidor de impresión. Pero cuando llamo alMétodo GetPrintQueues Solo obtengo colas definidas en el cuadro local. No importa lo que use para el dispositivo remoto.
CódigoImports System.Printing
Module Module1
Sub Main()
ListPrintQueues("\\local")
ListPrintQueues("\\remote")
ListPrintQueues("\\other")
End Sub
Sub ListPrintQueues(ByVal server As String)
Dim ps As New PrintServer(server)
Console.WriteLine("Printer Server=" & ps.Name)
Dim flags() As EnumeratedPrintQueueTypes = {EnumeratedPrintQueueTypes.Connections, EnumeratedPrintQueueTypes.Local}
Dim queues As PrintQueueCollection = ps.GetPrintQueues(flags)
For Each pq As PrintQueue In queues
Console.WriteLine(pq.FullName)
Next
Console.WriteLine()
End Sub
End Module
Ejemplo:Asumiendo la siguiente configuración
\\ local (Computadora local con 3 colas de impresión definidas, 1 es una conexión remota)LPrinter1LPrinter2\\ remote \ RPrinter1\\ remoto (Computadora remota con 2 colas de impresión definidas)RPrinter1RPrinter2\\ otro (Alguna otra computadora con 1 cola de impresión definida)OPrinter
Los resultados son:
Print Server=\\local \\local\LPrinter1 \\local\LPrinter2 \\remote\RPrinter1 Print Server=\\remote \\remote\RPrinter1 Print Server=\\other \\remote\RPrinter1
Mi mejor conjetura es que algo está sucediendo dentro del método GetPrintQueues () para hacer que el servidor de impresión se restablezca a la casilla local, ya que no importa cuál sea el nombre del servidor de impresión siempre que sea una computadora válida en la red.