リモート プロシージャ コールのエラーと問題を修正する方法

RPC サーバーが利用できませんというメッセージが表示された場合、この記事では Windows 11/10 でリモート プロシージャ コールのエラーと問題のトラブルシューティングを行う方法を紹介します。RPC またはリモート プロシージャ コールは、ソフトウェア アプリケーション間のポイントツーポイント通信を可能にするネットワークベースのプログラミング モデルです。このガイドでは、リモート プロシージャ コールのエラーのトラブルシューティング方法を紹介します。エラーは、Windows 管理インストルメンテーション (WMI)、SQL Server、リモート接続中、または一部の Microsoft 管理コンソール (MMC) スナップインに接続しているときに発生する可能性があります。

リモート プロシージャ コールのエラーのトラブルシューティング

RPC サーバーが利用できません」は、最もよく発生する問題の 1 つです。単純なネットワークの問題であるか、サーバーが応答できない可能性があります。リモート プロシージャ コールのエラーのトラブルシューティングに使用できるツールのリストを見てみましょう。管理者権限で PowerShell またはコマンド プロンプトを使用してこれらのコマンドを実行できます。\

ログを分析するには、Microsoft ネットワーク モニターまたは Microsoft Message Analyzer を使用する必要があります。

PortQuery

このツールは、接続しようとしているポートの問題を解決するのに役立ちます。アプリケーションまたはコンピューターがサーバーに接続できるかどうかを判断できます。

Portqry.exe -n <ServerIP> -e 135

上記のコマンドは、指定されたサーバー IP の TCP ポート 25 に対してクエリを実行しようとします。ここで Web サイトを使用すると、IP アドレスが内部で変換されます。出力で、*ip_tcpとポート番号を探します。接続が失敗した場合、応答に失敗したことが返されます。すべて正常に見える場合は、最後にポート番号 (太字でマーク) を探します。これは、次のような形式になります。

....Server's response: UUID: d95afe70-a6d5-4259-822e-2c84da1ddb0d ncacn_<strong>ip_tcp</strong>:169.254.0.10<strong>[49664]</strong>

ポート番号が表示されない場合、サーバー側で何か問題があり、ポートがリッスンしていないことを意味します。

Netsh

次に、Netsh コマンドを使用して同時トレース データを収集できます。ここでは、トレースとはネットワーク上の 1 つのポイントから別のポイントへのパスを意味します。その間に問題を引き起こしているものがあれば、わかります。

クライアントで実行します:

Netsh trace start scenario=netconnection capture=yes tracefile=c:\client_nettrace.etl maxsize=512 overwrite=yes report=yes

サーバーで実行します:

Netsh trace start scenario=netconnection capture=yes tracefile=c:\server_nettrace.etl maxsize=512 overwrite=yes report=yes

上記のコマンドは、トレースファイル (.etl) にログを保持します。このコマンド プロンプト ウィンドウを開いたままにします。

クライアント マシンで発生していた問題を再現してみます。ソフトウェアのボタンを押したり、問題を引き起こしていたものを押したりする必要があるかもしれません。問題が発生したら、クライアント マシンのコマンド プロンプトでNetsh trace stopを実行します。

次に、アナライザー ツールを使用してトレースをフィルタリングします。

Ipv4.address== and ipv4.address== and tcp.port==135 or just tcp.port==135

また、「プロトコル」列の下の「EPM」プロトコルを探します。

サーバーから応答が返ってくるかどうかを確認します。応答が返ってきたら、使用するように割り当てられた動的ポート番号をメモします。

  • この動的ポートに正常に接続できるかどうかを確認します。
  • フィルタは次のような形式にする必要があります: tcp.port== and ipv4.address==

これにより、接続を確認し、ネットワークの問題があるかどうかを特定するのに役立ちます。

ポートに到達できない

RPC サーバーが利用できないというメッセージが表示される最も一般的な理由は、クライアントが接続しようとしている動的ポートに到達できない場合です。トレースが途中で途切れたり、ポートが見つからないというエラーが返ってきたりする場合、考えられる理由は次のとおりです。

  • ファイアウォールが動的ポート範囲をブロックしている。
  • 中間にあるルーターやネットワーク デバイスがパケットをドロップしている。応答が返ってこない。
  • 宛先サーバーがパケットをドロップしている (WFP ドロップ/NIC ドロップ/フィルター ドライバーなど)。

ポートに到達できない問題のベスト プラクティスは、動的割り当てを使用することです。レジストリを使用すると、管理者は RPC の動的ポート割り当てを構成できます。

これらのツールとヒントは、問題を分析して解決するのに役立ちます。解決策は、問題が何であるかによって異なり、ソフトウェアとサーバーによって異なります。

次の関連する投稿を確認してください:

  1. Microsoft Store アプリのリモート プロシージャ コールが失敗しました
  2. サインイン オプションとして PIN を作成中にリモート プロシージャ コールが失敗しました
  3. RPC サーバーが利用できません
  4. DISM を使用中にリモート プロシージャ コールが失敗しました。