マシンに直接アクセスできない場合、Sysinternals の PsExec は、リモートでリモート デスクトップ プロトコル (RDP) を有効にするのに優れたツールです。PsExec を使えば離れた場所からコマンドを実行できるため、この目的に理想的です。
2025年に向けて情報が最新で効果的であることを確認するため、Microsoft Answers や Spiceworks などの信頼できる情報源にある最新のユーザーガイド、フォーラム、ディスカッションを確認しました。本ガイドは、実際のフィードバックとベストプラクティスに基づき、PsExec を使用して RDP を有効にするための、最新かつ実証済みの手順を反映しています。
これらはすべて、PsExec が既に対象マシンに到達でき、認証を行えることを前提としています。もしそのようなアクセスがまだない場合は、以下の HelpWire セクションまでスキップしてください。
以下は、Windows 10、11、Server 2022 でリモートから RDP を有効にするための、簡略化したステップバイステップの手順です: PsExec をダウンロードしてセットアップする、RDP を有効にするためにレジストリを変更する、ファイアウォールで RDP を許可する、セッションの制限を調整する(任意)リモート デスクトップ サービスを確認または再起動する、必要に応じて PowerShell で詳細設定を行う。
それでは、詳細なガイドに進みましょう。
1. PsExec をダウンロードしてセットアップする
-
PsExec をダウンロード 公式の Sysinternals ウェブサイトから: Microsoft Learn の PsExec.
-
ファイルを展開し、C:\Tools\PsExec. などのディレクトリに配置します。
-
必要に応じて、PsExec をシステムの PATH に追加してアクセスを容易にします:
• この PC > プロパティ > システムの詳細設定 > 環境変数 を右クリックします。
• システム環境変数 の下で Path を見つけ、PsExec があるディレクトリを追加します。
2. レジストリ編集で RDP を有効化
-
管理者としてコマンド プロンプトを開きます。
-
次のコマンドを実行して、リモートでレジストリを変更し、RDP を有効にします:
psexec \\TargetMachineName reg add “HKLM\System\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f
3. Windows ファイアウォールで RDP を許可する
-
RDP のファイアウォール ルールを有効にするには、次のコマンドを実行します:
psexec \\TargetMachineName netsh advfirewall firewall set rule group=”remote desktop” new enable=Yes
-
ルールを確認するには、次を実行します:
psexec \\TargetMachineName netsh advfirewall firewall show rule name=”remote desktop”
4. レジストリで RDP セッションの制限を設定する(オプション)
許可されている RDP セッションの最大数を増やすには、次を実行します:
psexec \\TargetMachineName reg add “HKLM\System\CurrentControlSet\Control\Terminal Server” /v MaxInstanceCount /t REG_DWORD /d 100 /f
5. リモート デスクトップ サービスを確認して再起動する
-
リモート デスクトップ サービスが実行中かどうかを確認するには:
psexec \\TargetMachineName sc query TermService
-
起動していない場合は、次で起動してください:
psexec \\TargetMachineName sc start TermService
6. 任意: PowerShell を使用して高度な構成を行う
PowerShell を使用してリモートで RDP を有効にする:
psexec \\TargetMachineName powershell -Command “Set-ItemProperty -Path ‘HKLM:\System\CurrentControlSet\Control\Terminal Server’ -Name fDenyTSConnections -Value 0”
7. PsExec がマシンに接続できない場合
上記の各コマンドは、PsExec が対象マシンへの到達可能なネットワーク経路と、そのマシン用の有効な管理者資格情報をすでに持っていることを前提としています。マシンがネットワーク上で到達不能である、ファイアウォールの背後にある、またはまだ有効な資格情報を持っていない場合、psexec \\\\TargetMachineName コマンドはどれも実行されません。
HelpWire はこの問題を完全に回避します。すでに管理者ネットワークアクセスを持つマシンに対してコマンドを実行する代わりに、そのマシンにいる相手に接続リンクを送信し、相手が承認すると接続できます。事前の有効な資格情報やネットワーク経路は不要です。セッションは TLS と AES-256 によってエンドツーエンドで暗号化され、対象マシンが Windows、macOS、Linux のいずれであっても同様に動作します。
接続できたら、コマンド プロンプトやレジストリ エディターを直接開いて、本ガイドにあるのとまったく同じ fDenyTSConnections やファイアウォールのコマンドを、ネットワーク経由ではなくセッション内から実行できます。既に管理しているマシン群全体に対して RDP の有効化をスクリプト化する場面では PsExec の代替にはなりませんが、ほかの方法ではまだ到達できない単一のマシンを相手にする場合には、より迅速な手段になります。
まとめ
専門家の議論やフォーラムを確認した結果、RDP を有効化するためのこれらの PsExec の手法は 2025 年時点でも有効であることを確認しました。問題が続く場合は、ネットワーク接続、権限、またはグループ ポリシーの設定を確認してください。大規模なネットワークでは、リモート デスクトップ管理を効率化するために PowerShell スクリプトでプロセスを自動化することを検討してください。