Проблема
Я пытаюсь получить список очередей печати, доступных на удаленном сервере .
В конечном итоге это нужно будет выполнить из ASP.NET, но сейчас я бы согласился на работу консольного приложения.
Когда я создаю экземпляркласс System.Printing.PrintServer , использующий путь к удаленному серверу. Я могу получить основную информацию о сервере печати.Но когда я вызываю метод GetPrintQueues, я получаю только те очереди, которые определены в локальном окне .Неважно, что я использую для удаленного устройства.
Код
Imports 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
Пример:
Предполагается следующая конфигурация
- \\ local( Локальный компьютер с 3 определенными очередями печати, 1 является удаленным подключением )
- LPrinter1
- LPrinter2
- \\ remote \ RPrinter1
- \\ remote ( Удаленный компьютер с 2 определенными очередями печати )
- \\ прочее ( Какой-то другой компьютер с определенной 1 очередью печати )
Результаты:
Print Server=\\local
\\local\LPrinter1
\\local\LPrinter2
\\remote\RPrinter1
Print Server=\\remote
\\remote\RPrinter1
Print Server=\\other
\\remote\RPrinter1
Мне кажется, что внутри метода GetPrintQueues () что-то происходит, что приводит к сбросу сервера печати в локальный ящик, поскольку не имеет значения, какое имя сервера печати, еслиэто действующий компьютер в сети.