В этой статье мы рассмотрим, что делать, если при RDP подключении к удаленному хосту вместо рабочего стола вы видите черный экран. Эта проблема стала довольно часто встречаться в последних билдах Windows 10 и Windows Server 2019, и я решил оставить тут информацию из внутренней базы знания нашего HelpDesk о типовых способах решения.
Итак, вы пытаетесь подключиться к удаленному компьютеру стандартным RDP клиентом Windows (mstsc.exe) и после ввода имени и пароля вместо рабочего стола вы видите черный экран (BLM).
Причин, из-за которых вместо RDP сессии отображается черный экран довольно много. Как-то диагностировать или классифицировать их довольно сложно.
- В RDP сессии нажмите сочетание клавиш
CTRL+ALT+END
(в том числе позволяет сменить пароль в RDP сеансе), а затем нажмите кнопку Отмена. Иногда это позволяет вернуться к рабочему столу RDP сессии. Если это не помогло, запустите из этого экрана диспетчер задач Task Manager и запустите процесс File Explorer (File -> Run new task ->explorer.exe
-> Ok); - Проверьте, что в настройках RDP клиента (
mstsc.exe
) отключено кэширование (отключите опцию Persistent bitmap caching на вкладке Experience) и используется разрешение экрана, которое поддерживается удаленным хостом (на вкладке Display выставите меньшее разрешение экрана, или попробуйте режим Full Screen); - Убедитесь, что на вашем и на удаленном компьютере установлены последние версии видеодрайверов. Попробуйте воспользоваться автоматическим обновлением драйверов (если этот режим у вас не отключен), или скачайте и установите драйвер вручную).
В некоторых случаях для 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 (либо тоже самое через реестр:
reg add “HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services” /v “fEnableWddmDriver” /t REG_DWORD /d 0 /f
. Обновите групповые политики на RDP сервере; - В Windows Server 2016 с настроенными таймаутами для RDS сессий пару раз сталкивался с жалобами пользователей, что после подключения в отключенную (disconnected) сессию, она не активировалась корректно и они видели черный экран. Здесь поможет только завершение RDP сеанса пользователем самостоятельно (CTRL+ALT+End -> Sign out), либо принудительное завершение сессии администратором (по аналогии со статьей Не удается завершить требуемую операцию при входе по RDP). Либо настройте более агрессивные настройки отключения disconnected сессий;
- Отключите использование протокола UDP 3389 для передачи RDP трафика в дополнение к стандартному RDP порту TCP 3389 (доступно, начиная с Windows Server 2012 R2/Windows 8.1) через параметр 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
На windows 2012 столкнулся с такой проблемой. 4 виртуальных сервера, 2 из них контроллеры домена, на обоих эта проблема. Запустить диспетчер задач не получается — всё тот же черный экран. К одному из контролеров домена удается подключиться другой учеткой. Как я заметил, при подключении успевает мелькнуть «применение GPO» и потом черный экран. Сами серверы работают стабильно, проходят все тесты DNS и DC, репликация работает. Единственное что дает хоть какой то эффект, это снос GUI. К серверу в режиме core можно подключаться по RDP.
Попробую как-нибудь поиграться с блокированим GPO для этих серверов, как время будет.
Иногда на РДС серверах нужно перегрузить службу «Audiosrv (Windows Audio)», тогда профиль прогружается и появляется раб.стол. (у меня такое бывало)
+1
Жертвовать отключением UDP как странно…
Вы для начала бы сообщили бы Вашу конфигурацию.
Кол-во пользователей на хост, параметры хоста, используемые приложения, какая дисковая система; локальные, перенаправленные или vhdx профиля; vm или baremetal; сеть.
Подключение через шлюз или в локалке. Если через шлюз, то выкинут ли напрямую или через прокси.
Много разных нюансов бывает…
Не забывайте также про многократное дублирование служб и правил файрвола на 2016-ом (тоже надо ограничивать).
Как вот это сделать? «reg add “HKLM\SOFTWARE\Microsoft\Terminal Server Client” /v “UseURCP” /t REG_DWORD /d 0 /f» Через Пуск -Выполнить? У меня как раз такие ошибки есть в Журнале и к серваку 2019 с Windows 10 подключаясь черный экран, причем появился не сразу.
А если при удаленном подключении через одного провайдера все работает, а через другого получаем черный экран, то какие порты закрыты у этого провайдера?
Проверяйте 3389 UDP и TCP. Думаю, что закрыт UDP
При использовании RDS + UPD в фаейрволе накапливаются тысячи правил для uwp приложений. из за этого сервер начинает тормохить и пользователи получать черных экранпри входе.
Решение:
1) задть параметр реестра:
New-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy” -Type DWord -Path -Name DeleteUserAppContainersOnLogoff -Value 1
2) Удалиь лишние правила в файерволе
Но похоже это тоже до конца не помогает, правила продолжают создаваться.
появляется ошибка DistrubutedCOM во вьювере. у юзера чёрный экран, отключаешь другого юзера, тот экран пропоадает, юзер заходит
По поводу отключить использование протокола URCP.
Я так понимаю здесь описан метод отключения этого протокола на клиенте. А можно отключить этот протокол на сервере?
Про URCP на сервере не нашел ничего..
Как вариант — совсем отключить UDP на сервере?
https://winitpro.ru/index.php/2023/04/18/zavisaet-rdp-sessiya-udp-transport/