Windows 11/10 でリモート デスクトップ接続の問題とエラーを修正する

リモート デスクトップ プロトコル (RDP) は、ネットワーク接続を介して別のコンピュータに接続するためのグラフィカル インターフェイスをユーザーに提供する Microsoft が開発した独自のプロトコルです。ユーザーはこの目的のために RDP クライアント ソフトウェアを使用し、もう一方のコンピュータは RDP サーバー ソフトウェアを実行する必要があります。この投稿では、Windows 11/10 で一般的なリモート デスクトップ接続の問題をトラブルシューティングする方法について説明します。

リモート デスクトップ接続の問題を修正する

リモート デスクトップ クライアントが機能しない場合、またはリモート デスクトップに接続できないが、原因を特定するのに役立つメッセージまたはその他の症状が表示されない場合は、以下に概説するトラブルシューティング手順を試してください。

1] ローカル コンピュータで RDP プロトコルのステータスを確認する

ローカル コンピュータで RDP プロトコルのステータスを確認して変更するには、リモート デスクトップを有効にする必要があります。コマンド プロンプトまたは PowerShell を使用してリモート デスクトップを有効にすることもできます。

2] リモート コンピュータで RDP プロトコルのステータスを確認する

リモート コンピュータで RDP プロトコルのステータスを確認して変更するには、ネットワーク レジストリ接続を使用します。

これはレジストリ操作であるため、必要に応じてレジストリをバックアップするか、システムの復元ポイントを作成することをお勧めします。完了したら、次のように進めることができます。

  • Windows キー + R を押して、[ファイル名を指定して実行] ダイアログを呼び出します。
  • [ファイル名を指定して実行] ダイアログ ボックスにregeditと入力し、Enter キーを押してレジストリ エディターを開きます。
  • レジストリ エディターで、ファイルを選択し、ネットワーク レジストリに接続を選択します。
  • コンピュータの選択ダイアログ ボックスで、リモート コンピュータの名前を入力します。
  • 名前を確認を選択します。
  • OKを選択します。
  • 次に、以下のレジストリ キー パスに移動またはジャンプします。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
  • その場所で、右ペインでfDenyTSConnectionsキーをダブルクリックしてプロパティを編集します。
  • RDP を有効にするには、fDenyTSConnections の値データを1から0に変更します。

値 0 は RDP が有効であることを示し、値 1 は RDP が無効であることを示します。

関連: Windows 11/10 でリモート デスクトップ オプションがグレー表示される、

3] グループ ポリシー オブジェクト (GPO) がローカル コンピュータで RDP をブロックしているかどうかを確認する

ユーザー インターフェイスで RDP をオンにできない場合、またはfDenyTSConnectionsの値が変更後も1に戻る場合は、GPO がコンピュータ レベルの設定を上書きしている可能性があります。

ローカル コンピュータのグループ ポリシー構成を確認するには、次の手順を実行します。

  • Windows キー + Rを押して、[ファイル名を指定して実行] ダイアログを呼び出します。
  • [ファイル名を指定して実行] ダイアログ ボックスにcmdと入力し、CTRL + SHIFT + ENTERを押してコマンド プロンプトを管理者/昇格モードで開きます。
  • コマンド プロンプト ウィンドウで、以下のコマンドを入力して Enter キーを押します。
gpresult /H c:\gpresult.html
  • コマンドが実行されたら、gpresult.html を開きます。
  • コンピューターの構成\管理用テンプレート\Windows コンポーネント\リモート デスクトップ サービス\リモート デスクトップ セッション ホスト\接続で、リモート デスクトップ サービスを使用してユーザーがリモートで接続することを許可するポリシーを見つけます。

このポリシーの設定が有効の場合、グループ ポリシーは RDP 接続をブロックしません。このポリシーの設定が無効の場合、勝利 GPOを確認します。これは RDP 接続をブロックしている GPO です。

4] GPO がリモート コンピュータで RDP をブロックしているかどうかを確認する

リモート コンピュータのグループ ポリシー構成を確認するには、昇格された CMD プロンプトで以下のコマンドを実行します。

gpresult /S <computer name> /H c:\gpresult-<computer name>.html

このコマンドが生成するファイル (gpresult-.html) は、ローカル コンピュータ バージョン (gpresult.html) が使用するものと同じ情報形式を使用します。

5] ブロックしている GPO を変更する

これらの設定は、グループ ポリシー オブジェクト エディター (GPE) とグループ ポリシー管理コンソール (GPMC) で変更できます。

ブロック ポリシーを変更するには、次のいずれかの方法を使用します。

GPE を使用して、次の手順を実行します。

  • Windows キー + Rを押して、[ファイル名を指定して実行] ダイアログを呼び出します。
  • [ファイル名を指定して実行] ダイアログ ボックスにgpedit.mscと入力し、Enter キーを押してグループ ポリシー エディターを開きます。
  • ローカル グループ ポリシー エディター内で、左ペインを使用して以下のパスに移動します。
コンピューターの構成 > 管理用テンプレート > Windows コンポーネント > リモート デスクトップ サービス > リモート デスクトップ セッション ホスト > 接続
  • その場所で、右ペインでリモート デスクトップ サービスを使用してユーザーがリモートで接続することを許可するをダブルクリックしてプロパティを編集します。
  • ポリシーを有効または構成されていないのいずれかに設定します。
  • 適用>OKをクリックして終了します。
  • 影響を受けるコンピュータで、管理者としてコマンド プロンプト ウィンドウを開き、以下のコマンドを実行します。
gpupdate /force

GPMC を使用して、ブロック ポリシーが影響を受けるコンピュータに適用されている組織単位 (OU) に移動し、OU からポリシーを削除します。

6] RDP サービスのステータスを確認する

ローカル (クライアント) コンピュータとリモート (ターゲット) コンピュータの両方で、次のサービスが実行されている必要があります。

  • リモート デスクトップ サービス (TermService)
  • リモート デスクトップ サービス ユーザー モード ポート リダイレクター (UmRdpService)

いずれかのコンピュータで、1 つまたは両方のサービスが実行されていない場合は、それらを起動します。

次の手順を実行します。

  • Windows キー + Rを押して、[ファイル名を指定して実行] ダイアログを呼び出します。
  • [ファイル名を指定して実行] ダイアログ ボックスにservices.mscと入力し、Enter キーを押してサービスを開きます。
  • サービス ウィンドウで、スクロールして前述の両方のサービスを見つけます。
  • エントリをダブルクリックしてプロパティを編集します。
  • プロパティ ウィンドウで、開始ボタンをクリックします。
  • OKをクリックします。

リモート コンピュータがリモート PowerShell コマンドレットを受け入れるように構成されている場合、PowerShell を使用してサービスをローカルまたはリモートで管理することもできます。

7] RDP リスナーのステータスを確認する

この手順では、同じコマンドレットがローカルとリモートの両方で機能するため、PowerShell を使用します。ローカル コンピュータの場合、管理者権限を持つコマンド プロンプトを使用することもできます。

リモート コンピュータに接続するには、次の手順を実行します。

  • Windows キー + Xを押して、パワー ユーザー メニューを開きます。
  • キーボードでAをタップして、管理者/昇格モードで PowerShell を起動します。
  • PowerShell コンソールで、以下のコマンドを入力して Enter キーを押します。
Enter-PSSession -ComputerName <computer name>
  • qwinstaと入力します。

上の画像に示されているように、リストにrdp-tcpが含まれていてステータスがListenの場合、RDP リスナーは機能しています。トラブルシューティング手順 10]に進みます。それ以外の場合は、機能しているコンピュータから RDP リスナー構成をエクスポートする必要があります。

次の手順を実行します。

  • 影響を受けているコンピュータと同じオペレーティング システム バージョンを搭載したコンピュータにサインインし、そのコンピュータのレジストリにアクセスします。
  • 次のレジストリエントリに移動またはジャンプします。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  • エントリを .reg ファイルにエクスポートします。
  • エクスポートした .reg ファイルを影響を受けているコンピュータにコピーします。
  • RDP リスナー構成をインポートするには、影響を受けているコンピュータで管理者権限を持つ PowerShell ウィンドウを開きます (または PowerShell ウィンドウを開いて影響を受けているコンピュータにリモートで接続します)。

既存のレジストリエントリをバックアップするには、次のコマンドレットを入力します。

cmd /c 'reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp" C:\Rdp-tcp-backup.reg'

既存のレジストリエントリを削除するには、次のコマンドレットを入力します。

Remove-Item -path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp' -Recurse -Force

新しいレジストリエントリをインポートしてサービスを再起動するには、以下のコマンドレットを実行します。プレースホルダーをエクスポートされた .reg ファイルの名前に置き換えます。

cmd /c 'regedit /s c:\.reg' 
Restart-Service TermService -Force

コマンドレットの実行が完了したら、リモート デスクトップ接続を再度試行して構成をテストできます。それでも接続できない場合は、影響を受けているコンピュータを再起動します。

それでも接続できない場合は、次のトラブルシューティング手順に進み、RDP 自己署名証明書のステータスを確認します。

8] RDP 自己署名証明書のステータスを確認する

それでも接続できない場合は、次の手順を実行します。

  • Windows キー + Rを押して、[ファイル名を指定して実行] ダイアログを呼び出します。
  • [ファイル名を指定して実行] ダイアログ ボックスにmmcと入力し、Enter キーを押して Microsoft 管理コンソールを開きます。
  • ファイルメニューをクリックします。
  • スナップインの追加と削除を選択します。
  • スナップインのリストから証明書を選択します。
  • 追加をクリックします。
  • 管理する証明書ストアを選択するように求められたら、コンピュータ アカウントを選択します。
  • 次へをクリックします。
  • 影響を受けているコンピュータを選択します。
  • 完了ボタンをクリックします。
  • OKをクリックします。
  • これで、リモート デスクトップの下の証明書フォルダーで、RDP 自己署名証明書を削除します。
  • 影響を受けているコンピュータで、リモート デスクトップ サービスを再起動します。
  • 証明書スナップインを更新します。
  • RDP 自己署名証明書が再作成されていない場合、MachineKeys フォルダーの権限を確認します。

9] MachineKeys フォルダーの権限を確認する

影響を受けているコンピュータで、次の手順を実行します。

  • Windows キー + Eを押して、エクスプローラーを開きます。
  • 以下のディレクトリ パスに移動します。
C:\ProgramData\Microsoft\Crypto\RSA\
  • その場所で、MachineKeysを右クリックし、プロパティを選択し、セキュリティを選択し、詳細設定を選択します。

次の権限が構成されていることを確認します。

  • Builtin\Administrators:フル コントロール
  • Everyone:読み取り、書き込み

10] RDP リスナー ポートを確認する

ローカル (クライアント) コンピュータとリモート (ターゲット) コンピュータの両方で、RDP リスナーはポート 3389 でリッスンしている必要があります。このポートは他のアプリケーションで使用しないでください。

RDP ポートを確認または変更するには、レジストリ エディターを使用します。予防策として、レジストリをバックアップするか、システムの復元ポイントを作成してから、次のように続行します。

  • レジストリ エディターを開き、ファイルを選択してからネットワーク レジストリに接続を選択します。
  • コンピュータの選択ダイアログ ボックスで、リモート コンピュータの名前を入力します。
  • 名前を確認を選択します。
  • OKを選択します。
  • 次に、以下のレジストリ キー パスに移動またはジャンプします。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  • その場所で、右ペインでPortNumberエントリをダブルクリックしてプロパティを編集します。
  • プロパティ ウィンドウで、値データ フィールドに3389以外の値がある場合は、3389に変更します。
  • OKをクリックして変更を保存します。
  • リモート デスクトップ サービスを再起動します。

11] 他のアプリケーションが同じポートを使用していないことを確認する

次の手順を実行します。

  • 昇格モードで PowerShell を開きます。
  • リモート コンピュータに接続するには、以下のコマンドを実行します。
Enter-PSSession -ComputerName <computer name>

次に、以下のコマンドを実行します。

cmd /c 'netstat -ano | find "3389"'
  • リッスンのステータスを持つ TCP ポート 3389 (または割り当てられた RDP ポート) のエントリを探します。

: そのポートを使用しているプロセスまたはサービスのプロセス ID (PID) は、PID 列に表示されます。

  • ポート 3389 (または割り当てられた RDP ポート) を使用しているアプリケーションを特定するには、以下のコマンドを入力します。
cmd /c 'tasklist /svc | find "<pid listening on 3389>"'
  • ポートに関連付けられている PID 番号 (netstatの出力から) のエントリを探します。その PID に関連付けられているサービスまたはプロセスは、右の列に表示されます。
  • リモート デスクトップ サービス (TermServ.exe) 以外のアプリケーションまたはサービスがポートを使用している場合は、次のいずれかの方法を使用して競合を解決できます。

別のアプリケーションまたはサービスを別のポートを使用するように構成する (推奨)。

他のアプリケーションまたはサービスをアンインストールする。

RDP を別のポートを使用するように構成し、リモート デスクトップ サービスを再起動する (推奨されない)。

12] ファイアウォールが RDP ポートをブロックしているかどうかを確認する

pspingツールを使用して、ポート 3389 を使用して影響を受けているコンピュータに到達できるかどうかをテストできます。

次の手順を実行します。

  • 影響を受けていない別のコンピュータに移動し、pspingをダウンロードします。
  • 管理者としてコマンド プロンプト ウィンドウを開き、psping をインストールしたディレクトリに変更し、以下のコマンドを入力します。
psping -accepteula <computer IP>:3389
  • pspingコマンドの出力を確認して、次のような結果を探します。

に接続中: リモート コンピュータに到達できます。

(0% の損失): 接続の試行はすべて成功しました。

リモート コンピュータがネットワーク接続を拒否しました: リモート コンピュータに到達できません。

(100% の損失): 接続の試行はすべて失敗しました。

  • 複数のコンピュータで psping を実行して、影響を受けているコンピュータに接続できるかどうかをテストします。
  • 影響を受けているコンピュータが他のすべてのコンピュータ、他のコンピュータの一部、または他のコンピュータからのみ接続をブロックしているかどうかを確認します。

実行できる追加の手順は次のとおりです。

  • ネットワーク管理者に連絡して、ネットワークが影響を受けているコンピュータへの RDP トラフィックを許可していることを確認します。
  • ソース コンピュータと影響を受けているコンピュータ (影響を受けているコンピュータの Windows ファイアウォールを含む) の間のすべてのファイアウォールの構成を調査して、ファイアウォールが RDP ポートをブロックしているかどうかを判断します。

この投稿が、発生している可能性のある RDP 接続の問題のトラブルシューティングに役立つことを願っています!