問題
リモート サーバーで使用可能な印刷キューのリストを取得しようとしています。
最終的には 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 つはリモート接続)
- Lプリンター1
- LPrinter2
- \\remote\RPrinter1
- \\remote ( 2 つの印刷キューが定義されたリモート コンピュータ)
- Rプリンター1
- RPrinter2
- \\other ( 1 つの印刷キューが定義されている他のコンピューター)
- Oプリンター
結果は次のとおりです。
プリント サーバー=\\local \\local\LPrinter1 \\local\LPrinter2 \\remote\RPrinter1 プリント サーバー=\\リモート \\remote\RPrinter1 プリント サーバー=\\その他 \\remote\RPrinter1
ネットワーク上の有効なコンピューターである限り、プリント サーバー名が何であれ問題ではないため、GetPrintQueues() メソッド内で何かが発生して、プリント サーバーがローカル ボックスにリセットされていると推測されます。