«Заморозка» изображения удалённого рабочего стола Windows 10 — решаем проблему


Столкнулся с интересной проблемой при переходе на удалённую работу. Работать приходится на рабочей машине через VPN, подключаясь к ней с помощью клиента удалённого рабочего стола с домашнего ПК. И вот при подобном соединении периодически как бы зависал экран, т.е. изображение полностью замирало, не менялось даже на чёрный экран. При этом отсоединения от сессии не проходило, мышь и клавиатура продолжала работать, так как при переключении было видно, что нажатия клавиш и мыши были переданы на удалённый ПК.

Приходилось постоянно переподключаться к рабочему ПК, что реально бесило — такое случалось часто, иногда по нескольку раз за несколько минут, иногда за час. Понятно было, что надо что-то делать, но непонятно было что. При этом домашний ноутбук, в отличии от ПК, таких кунштюков не выдавал, стабильно работая — было ясно, что проблема не в нестабильной работе сети или VPN, а кроется где-то в программной части домашнего ПК. Сначала я исправил всё, что показывал журнал системных ошибок, но это не помогло. Начал было уже косо смотреть на драйвер видеокарты, но мысль о том, что изображение замирает только в сессии RDP (Remote Desktop Protocol) меня успокоило на этот счёт. Поиски в интернете сначала успехов не принесли, потому что информации очень много и трудно так сформулировать запрос, чтобы на него не выдавалось куча бесполезной в моём случае информации. Но потом я всё-таки начал искать в английском сегменте и сразу нашёл решение.

По мнению тех, кто отвечал на вопрос подобный моему, дело заключалось в протоколе UDP, который использовался (вместе с TCP) в соединениях по протоколу RDP. И предлагалось отключить эту возможность через редактор локальных групповых политики Windows. Однако, в версии Windows 10 Home, этот редактор по-умолчанию отключён. Хорошо, что его можно установить, пусть для этого нам потребуется командная строка с правами администратора. Сначала надо ввести следующую строку:

FOR %F IN ("%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~*.mum") DO (DISM /Online /NoRestart /Add-Package:"%F")

Дождаться завершения и получив сообщение «Операция успешно завершена.», запустить вторую команду:

FOR %F IN ("%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~*.mum") DO (DISM /Online /NoRestart /Add-Package:"%F")

После перезагрузки ПК, запускаем с правами администратора оснастку gpedit.msc, можно из командной строки, можно просто из поиска в главном меню Windows:

Далее, надо найти в редакторе раздел Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Клиент подключения к удаленному рабочему столу:

Открываем Выбор транспортных протоколов RDP:

Включаем эту политику, и в параметрах Выбор типа транспорта выбираем «Использовать только TCP».

Скорее всего, отказаться от протокола UDP в пользу TCP, для решение этой проблемы, нужно из-за того, что UDP использует простую модель передачи, без неявных «рукопожатий» для обеспечения надёжности, упорядочивания или целостности данных, а TCP осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета, гарантируя тем самым (в отличие от UDP), целостность передаваемых данных и уведомление отправителя о результатах передачи. И когда клиент RDP через протокол UDP не получает нужный ему пакет и из-за этого подвисает изображение, то по какой-то причине клиент не понимает этого и не пытается решить эту проблему отправкой нового сообщения на отрисовку экрана. А вот через протокол TCP такого не проявляется, поскольку он гарантирует получение данных.

Но у меня почему-то данное решение не заработало. И пришлось копать глубже. И наконец-то мне удалось найти ещё один вариант с отключением UDP для RDP — с помощью редактора реестра. Для этого надо запустить командную строку с правами администратора и запустить команду:

reg add "HKLM\software\policies\microsoft\windows nt\Terminal Services\Client" /v fClientDisableUDP /d 1 /t REG_DWORD

Или запустить редактор реестра с правами администратора:

И в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client добавить новый ключ fClientDisableUDP со цифровым значением 1:

Вот после этого, перезагрузив ПК, я полностью решил проблему с «заморозкой» изображения в клиенте удалённого рабочего стола.

В том же обсуждении упоминался и возможный «виновник» данного поведения клиента RDP: обновление Windows 10 под номером 1903, которое, в том числе, вносило исправления, касающиеся RDP-протокола:

  1. CVE-2019-1181 | Remote Desktop Services Remote Code Execution Vulnerability;
  2. CVE-2019-1182 | Remote Desktop Services Remote Code Execution Vulnerability.

На мой взгляд, эта версия имеет право на существование, поскольку на моём ноутбуке обновление 1903 не установлено, поскольку после его установки сначала отваливается Bluetooth, а после перезагрузки возникает «синий экран» и систему можно восстановить, только откатив последние изменения. Поэтому на нём таких симптомов и не было.

«Заморозка» изображения удалённого рабочего стола Windows 10 — решаем проблему: 2 комментария

  1. Я правильно понимаю, эту операцию только на клиенте делать надо?

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s