※ 2011/08/04 理解に間違いがあったので修正しました。
こんにちは、プラットフォームサポートの丸山です。
今日はネットワーク共有プリンターのトラブルシューティングに役に立つかもしれないお話です。
Windows XP や Windows Server 2003 までのコンピューターでは、ネットワーク共有プリンターを使用した場合のクライアント端末とサーバー端末との間では、名前付きパイプを使用して RPC 通信を行いますが、Windows Vista 以降のコンピュータでは、クライアント端末と、サーバー端末との間の通信方式として、可能であれば TCP 直接接続を使用して RPC 通信を使用するように変更されています。
この変更により、新しい RPC 通信では、クライアント端末とサーバー端末との間で多数の TCP セッションが作成されるため、多数のクライアントを抱えるネットワーク共有プリンターでは、ネットワーク機器の最大セッション数に達したり、ファイアウォールにブロックされたりして、ネットワーク共有プリンターが正しく動作しない問題が発生することがあります。
※たとえば、プリンターとFAX画面で、プリンターのステータスが [準備完了] にならず、[オフライン] と表示されたり、[接続できません] と表示されてしまう状況などがあげられます。
このようなとき、Windows 7 以降のクライアント端末では、EnableProtocols というレジストリ値を使用して、クライアント側の TCP 直接接続の RPC 通信を無効化することができますが、クライアント端末が Windows Vista や Windows Server 2008 である場合、また、クライアント端末が多く、すべてのクライアント端末でのレジストリ変更が難しいような状況では、以下の手順にて、プリント サーバー側で TCP 直接接続の RPC 通信を無効化してみることをおすすめします。
それでは、具体的な手順です。
サーバー側のレジストリ設定を変更して、スプーラーサービスを再起動するだけです。
以上で設定は完了です。
図 : 設定完了後のレジストリエディタの画面
DisableRpcTcp レジストリ値は、スプーラー サービスで使用されるプロトコルを変更する設定であり、スプーラー サービスと通信を行うアプリケーション以外への影響はありません。
DisableRpcTcp 値を設定した場合には、TCP 直接接続を使用した RPC 通信を行う代わりに、Windows Server 2003 などで使用されていた従来の名前付きパイプによる RPC 通信が使用されることになります。
名前付きパイプを使用した RPC 通信を使用すると、RPC の処理にオーバーヘットが発生し、応答待ちが発生するタイミングが多くなりますので、大量の印刷処理を行うプリント サーバーなどでは、パフォーマンスが若干低下するなどの影響が出ることがあります。
RPC 通信で使用可能なトランスポートの違いについて説明があります。
Connection-Oriented RPC Transportshttp://msdn.microsoft.com/en-us/library/cc243784.aspx
こちらは、EnableProtocols レジストリ値に関する技術情報ご案内です。
Windows 7 clients may not be able to print to Windows Server 2003 print serverhttp://support.microsoft.com/kb/2269469/
これら情報が、少しでもお役に立てれば幸いです。
それではまた。