Режим теневого (shadow) подключения в Windows позволяет администратору подключаться к RDP/RDS сеансу любого пользователя для просмотра рабочего стола пользователя и взаимодействия с ним (с или без согласия пользователя). Как правило, режиме Remote Desktop Shadowing используется для оказания технической поддержки пользователей на RDP серверах. Теневые подключения к RDP сессиям пользователей возможные во всех современных версиях Windows, включая Windows Server 2025,2022,2019,2016 и в десктопные Windows 11 и 10.
- Теневое подключение к RDP сессии пользователя в Windows Server
- Теневое RDP подключение из командной строки mstsc
- Групповые политики управления теневыми подключениями к RDS сессиям в Windows
- Теневое подключение RDS Shadow из PowerShell
- Аудит теневых подключений к сессиям в Windows
- Как разрешить обычном пользователям использовать теневое подключение?
Теневое подключение к RDP сессии пользователя в Windows Server
Администратор может подключиться к активной RDP сессии пользователя из графического интерфейса Server Manager (на сервере с установленной ролью Remote Desktop Services, RDSH) или из командной строки с помощью встроенной утилиты mstsc.exe.
Запустите консоль Server Manager на RDS сервере, перейдите в раздел Remote Desktop Services -> выберите необходимую RDS коллекцию (по умолчанию, QuickSessionCollection ).

В правом окне будет отображаться список сессий пользователей на серверах в этой RDS коллекции. Щелкните правой кнопкой по сессии нужно пользователя, выберите в контекстном меню Shadow (Теневая копия).
Shadow Error - The specified session is not connected.

Появится окно c параметрами теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt for user consent (Запрашивать согласие пользователя на подключение к сессии).

Если эта опция включена, в сессии у пользователя появится запрос на подтверждения подключения:
Winitproadministrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос?
Winitproadministrator is requesting to view your session remotely. Do you accept the request?


Если пользователь подтвердит подключение в режиме View, то администратор увидит его рабочий стол в режиме просмотра, но не сможет взаимодействовать с ним.

Если выбрана опция «Запрашивать согласие пользователя», в сессии у пользователя появится запрос:
Запрос на удаленное наблюдение/ Remote Monitoring Request Если пользователь отклонил административное Shadow RDS подключение, появится окно:
Shadow Error: The operator or administrator has refused the request.

ALT+* на рабочей станции или Ctrl+* на RDS сервере.
Ctrl + Alt + Break – переключить режим теневого подключения в полноэкранный.
Для удаленного подключения через режим RD Shadow, на хосте должны быть разрешены следующие правила файервола:
- Remote Desktop – Shadow (TCP-In)
- Remote Desktop – User Mode (TCP-In)
- Remote Desktop – User Mode (UDP-In)
Теневое RDP подключение из командной строки mstsc
Однако для удаленного теневого подключения гораздо удобнее использовать стандартный RDP клиент Windows (mstsc.exe), в котором есть несколько параметров для подключения к пользователю через RDS Shadowing:
Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt] [/prompt]]

- /shadow:sessionID – подключиться к RDP пользователю по ID его терминальной сессии
- /v:servername – можно указать имя удаленного хоста (RDP/RDS терминального сервера). Если имя сервера не указано, выполняется подключение к локальным сеансам на текущем хосте
- /control – подключиться в режиме взаимодействия с сеансом (рабочим столом) пользователя. Администратор может управлять мышкой пользователя, вводить данные с клавиатуры. Если эта опция не указана, используется режим просмотра сессии пользователя;
- /noConsentPrompt – опция позволяет администратору принудительно подключиться к любой сессии, не запрашивая у пользователя подтверждение на подключение
- /prompt – подключиться с использованием другой учетной записью (отличной от текущей). Появится окно запроса имя пользователя и пароль для подключения к сеансу.
Таким образом, чтобы подключиться к рабочему столу пользователя, нужно сначала узнать идентификатор его RDP сессии. Выполните команду:
quser или qwinsta
На экране отобразится список RDP сессий, их ID и статус: активная сессия (Active) или отключенная (Disconnected).

Найдите в списке имя пользователя, к которому вы хотите подключиться и ID его сеанса (в нашем примере ID= 3 ). Чтобы подключиться теневым подключение к этой RDP сессии в режиме управления, укажите этот ID в команде:
mstsc /shadow:3 /control

В указанной сессии появится запрос на теневое подключение, которое пользователь может принять или отклонить.

qwinsta /server:rds01
Чтобы подключиться к сессии пользователя на удаленном сервере, используйте команду:
Mstsc /v:rds01:3389 /shadow:3 /control
Чтобы подключиться к сессии пользователя без запроса, используйте команду:
mstsc /shadow:3 /control /noConsentPrompt
Однако с настройками по умолчанию в Windows запрещено подключаться к сессии пользователя без запроса:
Shadow Error: The Group Policy setting is configured to require the user’s consent. Verify the configuration of the policy settings.

Далее рассмотрим, как изменить настройки безопасности теневых подключений в Windows.
Групповые политики управления теневыми подключениями к RDS сессиям в Windows
В редакторе групповых политик ( gpedit.msc ) можно изменить настройки теневого управления RDS сессиями пользователей. Параметр Set rules for remote control of Remote Desktop Services user sessions (Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов) находится в разделе Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections (Административные шаблоны –> Компоненты Windows –> Службы удаленных рабочих столов ->Узел сеансов удаленных рабочих столов –> Подключения) в пользовательской и компьютерной секциях GPO.
Этой политикой можно настроить следующие варианты теневого подключения RD Shadow:
- No remote control allowed — удаленное управление не разрешено (значение параметра реестра
Shadow = 0) - Full Control with users’s permission — полный контроль сессии с разрешения пользователя (
1) - Full Control without users’s permission — полный контроль без разрешения пользователя (
2) - View Session with users’s permission – наблюдение за сеансом с разрешением пользователя (
3) - View Session without users’s permission – наблюдение за сеансом без разрешения пользователя (
4).

Данной политике соответствует DWORD параметр реестра Shadow в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal Services (значения этого параметра, соответствующие параметрам политики указаны в скобках). Таким образом, чтобы разрешить полный контроль в теневом подключении к RDP сессии без уведомления пользователя, можно создать этот параметр реестра командой:
reg add "HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services" /v Shadow /t REG_DWORD /d 2
Теневое подключение RDS Shadow из PowerShell
Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.
В первую очередь нужно получить список пользовательских сессий на терминальном RDS сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):
Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate 
Для более удобного теневого подключения к RDP сессиям пользователей можно использовать следующий BAT скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех пользователей с активными RDP сеансами. Вам нужно будет указать ID сеанса, к которому нужно подключится через Shadow сессию:
shadow.bat
@echo off
set /P rcomp="Enter name or IP of a Remote PC: "
query session /server:%rcomp%
set /P rid="Enter RDP user ID: "
start mstsc /shadow:%rid% /v:%rcomp% /control
Можно поместить данный файл в каталог %Windir%System32 . В результате для теневого подключения к пользователю достаточно выполнить команду shadow.
Либо можно воспользоваться PowerShell скриптом с графическим интерфейсом для вывода списка активных RDP сеансов на локальном сервере (готовый скрипт на нашем GitHub репозитории rdp_shadow_connection_gui.ps1).
Запустите скрипт, выберите учетную запись пользователя, к чьей сесии вы хотите подключится и нажмите Connect.

Когда к сессии пользователя через теневой сеанс подключился администратор, пользователь об этом не знает (никакик уведомлений в трее или рабочем столе нет). Вы можете включить автоматическое звуковое оповещение пользователя, если к его сессии подключится администратор. Запустите следующий PowerShell скрипт при входе каждого пользователя, который будет звуком оповещать, если обнаружено теневое подключение.
while($true){
if (Get-Process -Name "RdpSa" -ErrorAction SilentlyContinue){[console]::beep(1000,500);(New-Object System.Media.SoundPlayer "C:WindowsMediachimes.wav").PlaySync();Write-Host "RdpSa is running at $(Get-Date)"}
Start-Sleep -Seconds 30
}
Аудит теневых подключений к сессиям в Windows
Если вам нужно вести аудит RDS Shadow подключений к пользователям, используйте в качестве фильтра следующие события из журнала Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational:
- Event ID 20510: Shadow View Permission Granted — Предоставлено разрешение на теневой просмотр
- Event ID 20506: Shadow View Session Started — Запущен теневой просмотр сеанса
- Event ID 20507: Shadow View Session Stopped — Остановлен теневой просмотр сеанса
- Event ID 20510: Предоставлено разрешение на теневое управление

С помощью небольшого скрипта PowerShell можно вывести из журнала событий информацию о начале и окончании теневых подключений:
$logName = "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational"
$eventIds = 20506, 20507
Get-WinEvent -FilterHashtable @{LogName = $logName; Id = $eventIds} | ForEach-Object {
$event = $_
$message = $event.Message
$timeCreated = $event.TimeCreated
Write-Host "Time: $timeCreated"
Write-Host "Event ID: $($event.Id)"
Write-Host "Message: $message"
Write-Host "-----------------------------------"
}
Как разрешить обычном пользователям использовать теневое подключение?
В рассмотренных выше примерах для использования теневого подключения к RDP сессиям пользователей необходимы были права локального администратора на RDS сервере. Однако вы можете разрешить использовать теневое (shadow) подключение и для непривилегированных пользователей (не предоставляя им прав локального администратора на компьютере/сервере).
Чтобы разрешить членам доменной группы AllowRDSShadow использовать теневое подключение к RDP сессиям, выполните команду:
wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName='RDP-Tcp') CALL AddAccount 'corpAllowRDSShadow',2
Возможные права доступа:
-
0= WINSTATION_GUEST_ACCESS -
1= WINSTATION_USER_ACCESS -
2= WINSTATION_ALL_ACCESS
В связи с тем, что команда WMIC не поддерживается в новых версиях Windows, это изменение нужно вносить через Invoke-CimMethod:
$group = «reslabAllowRDSShadow»
(Get-CimInstance -Namespace "rootCIMV2TerminalServices" -ClassName Win32_TSPermissionsSetting -Filter "TerminalName='RDP-Tcp'") |
Invoke-CimMethod -MethodName AddAccount -Arguments @{AccountName=$group; PermissionPreSet=2}

Чтобы удалить права теневого подключения для группы, выполните:
$group = "corpAllowRDSShadow"
$tsPermissions = Get-CimInstance -Namespace "rootCIMV2TerminalServices" -ClassName Win32_TSPermissionsSetting -Filter "TerminalName='RDP-Tcp'"
Invoke-CimMethod -InputObject $tsPermissions -MethodName RemoveAccount -Arguments @{AccountName=$group}
Возможные ошибки и проблемы при использовании RD Shadowing
- Если RDP сессия пользователя заблокирована, или на его рабочем столе отображается запрос UAC при включенном Secure Desktop (настройки по умолчанию), то при подключении из
mstscбез флага/control, администратор уведёт черный рабочий стол с символом паузы. (при использовании опции /control запрос контроля учетных записей (UAC) не выводится в режиме Secure Desktop).
- Если при теневом подключении к сеансу RemoteApp, RD shadowing не отображает картинку опубликованного приложения RemoteApp, а только черный экран, отключите в GPO параметр Использовать дополнительную графику RemoteFX для удаленно приложения RemoteApp (Use advanced RemoteFX graphics for RemoteApp).


Добавить комментарий