リモートデスクトップのSession Shadowing

リモートデスクトップのセッションを共有して同じ画面を参照する機能。
RDPと比べて操作性は良くないので、参照用途に割り切った方がよさそう。

リモートデスクトップ設定

リモートデスクトップの有効化(PowerShell)

1
2
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections"
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication"

設定が必要な場合、以下を実行。

1
2
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Type Dword -Value "0"
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Type Dword -Value "0"

グループポリシーの設定

グループポリシーエディター(gpedit.msc)で以下の項目を編集する

英語版の場合(Computer Configuration -> Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections and called Set rules for remote control of Remote Desktop Services user sessions.

日本語版の場合(コンピュータの構成 -> 管理用テンプレート -> Windowsコンポーネント -> リモートデスクトップサービス -> リモートデスクトップセッションホスト -> 接続 -> リモートデスクトップサービスユーザセッションのリモート制御ルールを設定する

オプションはユーザーの許可なしでセッションを参照するにする。

GroupPolicyEditor width=640

Windows Defenderファイアウォールの設定

必要なポート

RDP(3389)とSMB(445)

  • リモートデスクトップ - シャドウ(TCP受信)
  • リモートデスクトップ - ユーザーモード(TCP受信)
  • リモートデスクトップ - ユーザーモード(UDP受信)
  • ファイルとプリンターの共有(SMB受信)

設定確認(PowerShell)

1
2
3
4
Get-NetFirewallRule -DisplayName "リモート デスクトップ - シャドウ (TCP 受信)"
Get-NetFirewallRule -DisplayName "リモート デスクトップ - ユーザー モード (TCP 受信)"
Get-NetFirewallRule -DisplayName "リモート デスクトップ - ユーザー モード (UDP 受信)"
Get-NetFirewallRule -DisplayName "ファイルとプリンターの共有 (SMB 受信)"

設定が必要な場合、以下を実行。

1
2
3
4
Set-NetFirewallRule -DisplayName "リモート デスクトップ - シャドウ (TCP 受信)" -Enabled True
Set-NetFirewallRule -DisplayName "リモート デスクトップ - ユーザー モード (TCP 受信)" -Enabled True
Set-NetFirewallRule -DisplayName "リモート デスクトップ - ユーザー モード (UDP 受信)" -Enabled True
Set-NetFirewallRule -DisplayName "ファイルとプリンターの共有 (SMB 受信)" -Enabled True

Session Shadowingで接続する

接続先のセッションIDを表示する

qwinsta /server:<Computer name or IP address>でセッションIDを確認。

接続方法

Mstsc.exe /shadow:<Session ID> /v:<Computer name or IP address> /prompt /noConsentPromptで既存のセッションに接続できる。

  • /noConsentPromptを指定しないと、既存のセッション側に接続を許可するか確認のポップアップが出る
  • /promptを指定するとログインプロンプトが表示される
  • /controlを指定すると、接続先が許可していれば、操作が可能になる

参考