Windows Vista および Windows Server 2008 のプリント サーバーで、TCP 直接接続を使用した RPC 通信を無効化する方法

※ 2011/08/04 理解に間違いがあったので修正しました。

こんにちは、プラットフォームサポートの丸山です。

今日はネットワーク共有プリンターのトラブルシューティングに役に立つかもしれないお話です。

■ Windows Vista 以降では、ネットワーク共有プリンタで使用される RPC 通信の方式が変更されています。

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 通信を無効化してみることをおすすめします。

■ TCP 直接接続を使用した RPC 通信の無効化手順

それでは、具体的な手順です。

サーバー側のレジストリ設定を変更して、スプーラーサービスを再起動するだけです。

  1.  プリント サーバー上で、レジストリ エディタを起動します。
  2.  次のキーを開きます。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print
  3.  [編集] メニューから [新規] - [DWORD (32 ビット) 値] を選択します。
  4. DWORD 値の名前として [DisableRpcTcp] を入力します。
  5. [編集] メニューから、[修正] を選択します。
  6. [値のデータ] ボックスに "1" を入力し、[OK] をクリックします。
  7. レジストリ エディターを終了します。
  8. スプーラー サービスを再起動します。※またはコンピューターを再起動します。

 以上で設定は完了です。


図 : 設定完了後のレジストリエディタの画面

 ■ DisableRpcTcp レジストリ値の変更による影響について

DisableRpcTcp レジストリ値は、スプーラー サービスで使用されるプロトコルを変更する設定であり、スプーラー サービスと通信を行うアプリケーション以外への影響はありません。

DisableRpcTcp 値を設定した場合には、TCP 直接接続を使用した RPC 通信を行う代わりに、Windows Server 2003 などで使用されていた従来の名前付きパイプによる RPC 通信が使用されることになります。

名前付きパイプを使用した RPC 通信を使用すると、RPC の処理にオーバーヘットが発生し、応答待ちが発生するタイミングが多くなりますので、大量の印刷処理を行うプリント サーバーなどでは、パフォーマンスが若干低下するなどの影響が出ることがあります。

■ 参考情報

RPC 通信で使用可能なトランスポートの違いについて説明があります。

Connection-Oriented RPC Transports
https://msdn.microsoft.com/en-us/library/cc243784.aspx

こちらは、EnableProtocols レジストリ値に関する技術情報ご案内です。

Windows 7 clients may not be able to print to Windows Server 2003 print server
https://support.microsoft.com/kb/2269469/

これら情報が、少しでもお役に立てれば幸いです。

それではまた。