Способы оплаты Abuse

Черный экран вместо рабочего стола в RDP сессии

02.12.2022, 03:31

Давайте рассмотрим, что делать, если во время RDP подключении к удаленному хосту вы видите не рабочий стол, а черный экран. Проблема особенно часто встречается в ранних версиях Windows 10 и Windows Server 2019. Забегая наперед скажем, что проблема решается. 

Причины возникновения проблемы

Почему вместо RDP сессии появляется черный экран?

Причины возникновения проблемы

Диагностировать или присвоить их к категории, то есть классифицировать, достаточно проблематично. Но мы постараемся это сделать:

Во время сессии RDP нажмите CTRL+ALT+END, после чего Отмена. Часто так можно вернуться к рабочему столу RDP сессии. Если не помогает, запускаем диспетчер задач Task Manager и процесс File Explorer (File -> Run new task -> explorer.exe -> Ok);

Настройки RDP клиента

Проверьте, что в настройках RDP клиента (mstsc.exe) отключено кэширование (выключаем Persistent bitmap caching на вкладке Experience) и используется разрешение экрана.

Разрешение экрана

Оно поддерживается удаленным хостом. Проверьте, что на вашем ПК стоит последняя версия видеодрайвера. Вы можете установить драйвера ручным способом или установить их автоматическое обновление. 

Настройки

Решение проблемы

Для Windows 10 нужно вставить использование XDDM вместо WDDM. Откроем редактор групповых политик gpedit.msc и в разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment ставим значение параметра Use WDDM graphics display driver for Remote Desktop Connections = Disabled. Обновляем групповые политики на RDP сервере.

Групповая политика

В Windows Server 2016 с выставленными таймаутами для RDS сессий иногда приходят жалобы пользователей, что после подключения в отключенную (disconnected) сессию, она не активировалась корректно и они видели черный экран. Здесь поможет только завершение RDP сеанса пользователем самостоятельно (CTRL+ALT+End -> Sign out), либо принудительное завершение сессии администратором (по аналогии со статьей Не удается завершить требуемую операцию при входе по RDP). Либо настройте более агрессивные настройки отключения disconnected сессий;

Отключаем использование протокола UDP 3389 для передачи RDP трафика в дополнение к стандартному RDP порту TCP 3389 через параметр Turn off UDP on client на клиенте (Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Connection Client) или через реестр: reg add “HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client” /v “fClientDisableUDP” /t REG_DWORD /d 1 /f . Для отключения UDP протокола для RDP трафика на стороне сервера, настройте параметр GPO …Remote Desktop Session Host -> Connections -> Select RDP transport protocols = Use only TCP.Локальная политика

Другие способы

Из более экзотических рекомендаций от Microsoft, которые помогают далеко не всегда, но могут исправить именно источник проблемы:

Проверяем RDP сервер, клиент и все сетевое оборудование между ними. Они должны быть настроены на одинаковый MTU.

Выключаем опцию сжатия данных, которые перелаются, в сеансе RDP через редактор локальной GPO – Configure compression for RemoteFX data (Настройка сжатия данных RemoteFX) = Do not use an RDP compression algorithm (Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host).

Если проблема с черным экраном в RDP встречается на Windows Server 2019 и Windows 10 1809+. Откройте Event Viewer и проверьте журнал событий Application and Service Logs –> Microsoft –> Windows –> RemoteDesktopService-RdpCoreTS.

Проверьте, есть ли там ошибки вида ‘ Failed GetConnectionProperty’ in CUMRDPConnection::QueryProperty at 2884 err=[0x80004001] ‘, ‘ Connection doesn’t support logon error redirector’ in CUMRDPConnection::GetLogonerrorRedirector at 4199 err=[0x80004001].

Если есть, отключаем использование протокола URCP (Universal Rate Control Protocol), который используется для передачи некоторых данных между RDP клиентом и сервером поверх UDP (MS-RDPEUDP2): reg add “HKLM\SOFTWARE\Microsoft\Terminal Server Client” /v “UseURCP” /t REG_DWORD /d 0 /f или так New-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Terminal Server Client' -Name UseURCP -PropertyType DWord -Value 0

Проверяем RDP сервер

Теперь вы знаете, как можно решить эту проблему.