`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Игорь Шаститко

Как настроить масштаб интерфейса в клиенте удаленного рабочего стола RDP при высоком разрешении экрана

+11
голос

У меня появился новый ноутбук — можно сказать, классика рабочего жанра — Lenovo ThinkPad T580. В этом ноуте все отлично — и характеристики его железа (на канале будет отдельный обзор), и, собственно дизайн, вес и прочие эргономические вещи... И как главная плюшка — у ноута отличный 15″ экран с разрешением 3840×2160 — 4К.

Но, как часто бывает — все эти плюшки не только приятны, но и имеют отрицательные стороны. Вы видели, какой масштаб PPI (DPI) стоит для таких вот 15″ экранов 4К 3840×2160, подобных Lenovo ThinkPad T580?! — правильно, 250% по умолчанию! Т.е. именно настолько масштабируется изображение, чтобы текст на экране был читаемый глазом, а в элементы управления можно было попадать мышкой. Кто не знаком с эффектом DPI/PPI на маленьких экранах с большим разрешением (от 4К и выше) — рекомендую заглянуть в настройки дисплея в Windows и там поиграться в настройками Scaling’а. А для наглядности — вот вам картинка для сравнения вида интерфейса в масштабе 100% и 225%

Как настроить масштаб интерфейса в клиенте удаленного рабочего стола RDP при высоком разрешении экрана

При чем здесь DPI/PPI и масштабирование, спросите вы? А при том, что представьте себе, что у вас есть приложение, которое ничего не знает о том, в каком масштабе отображать картинку внутри себя и никакого масштабирования внутри такого приложения не происходит. В результате — внутри окна приложения будет все настолько мелким, насколько это выглядит таковым в приведенном выше примере (слева).

И таким вот нужным и часто используемым приложением, которое «не понимает масштабирования» для экранов с большим разрешением — является Microsoft Remote Desktop Client (да и многие прочие клиенты удаленного рабочего стола RDP). При подключении к удаленному компьютеру — рабочий стол этого компьютера в RDP выглядит катастрофически мелким, поскольку картинка RDP оттуда — отображается с масштабированием DPI удаленного сервера, которое может быть и 150%, и даже 100%. Работать с таким удаленным интерфейсом на экране 4К размером 15″ — нереально, курсора мышки иногда просто не видно.

Так поменять масштабирование на удаленном сервере!!! — ага, сейчас, по умолчанию на сервере такая опция заблокирована — для изменения масштабирования интерфейса в сеансе RDP на сервере надо провести шаманские пляски (если у вас есть права на это), да и не будешь на каждом сервере это менять...

Итого, остается только вариант научить клиента удаленного рабочего стола RDP («родного» Microsoft’овского или какого либо другого) понимать масштабирование и учитывать это при соединении с удаленным сервером.

После достаточно длительного поиска в Инете и чтения разных «рецептов танцев с бубнами» вокруг проблемы масштабирования DPI/PPI в RDP, я пришел к выводу, что самым работоспособным рецептом решения проблемы является вариант, описанный в статье [Fix] Remote Desktop DPI scaling issues. Во избежание потери информации (если вдруг страницу или файлы удалят, сайт закроют) — сделаю вольный перевод предложенного материала/копию файлов и у себя на блоге.

Итак, метод лечения проблемы масштабирования интерфейса для стандартного RDP клиента Microsoft крайне прост и заключается в копировании специального файла-манифеста для RDP, который собственно и содержит в себе команду включения того самого масштабирования для удаленного подключения:

Правим на локальной машине (где вы и используете RDP и где у вас, надеюсь, есть все права админа) реестр, указывая, что стандартный RDP клиент должен брать настройки из файла манифеста:

  1. Запускаем утилиту regedit и идем по следующему пути: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide

  2. Создаем новый параметр, кликнув на пустом поле справа правой кнопкой мышки NEW -> DWORD (32 bit) Value

  3. Вводим имя нового параметра PreferExternalManifest и жмем ENTER.

  4. Снова кликаем правой кнопкой мыши, теперь уже по записи PreferExternalManifest, и выбираем Modify.

  5. Вводим в Value Data значение 1 и выбираем пункт Decimal.

  6. Нажимаем в окошке OK.

  7. Закрываем Registry Editor.

  8. Результат должен выглядеть примерно следующим образом:

Как настроить масштаб интерфейса в клиенте удаленного рабочего стола RDP при высоком разрешении экрана

Далее, нужно создать файл самого манифеста под именем mstsc.exe.manifest и поместить его в папку %SystemRoot%\System32\mstsc.exe.manifest (обычно это C:\Windows\System32\mstsc.exe.manifest). Полный текст содержимого mstsc.exe.manifest приведен ниже, уже готовый файл mstsc.exe.manifest можете забрать здесь.

Далее — запускаем стандартный Microsoft клиент RDP (mstsc.exe) или перезапускаем его (если на момент изменений были открыты какие-то RDP сессии) и наслаждаемся соответствующим масштабу вашего локального экрана виду удаленного экрана. В реальности, данный фикс настроек RDP клиента работает очень просто — RDP клиент отправляет запрос на такое разрешение удаленного экрана, которое на соответствующий масштабу процент меньше, чем оригинальное у клиента — так что не удивляйтесь «странным» цифрам в разрешении удаленного рабочего стола. Например, если у меня разрешение 4К 3840×2160 при 225% масштаба, то разрешения удаленного стола будет установлено обновленным RDP клиентом для полноэкранной картинки как 1704×960 (как раз те самые 3840/2,25 и т.д.) — и все элементы удаленного интерфейса соответствуют масштабу.

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>

<assembly xmlns=”urn:schemas-microsoft-com:asm.v1″ manifestVersion=”1.0″ xmlns:asmv3=”urn:schemas-microsoft-com:asm.v3″>

<dependency>

<dependentAssembly>

<assemblyIdentity

type=”win32″

name=”Microsoft.Windows.Common-Controls”

version=”6.0.0.0″ processorArchitecture=”*”

publicKeyToken=”6595b64144ccf1df”

language=”*”>

</assemblyIdentity>

</dependentAssembly>

</dependency>

<dependency>

<dependentAssembly>

<assemblyIdentity

type=”win32″

name=”Microsoft.VC90.CRT

version=”9.0.21022.8″

processorArchitecture=”amd64″

publicKeyToken=”1fc8b3b9a1e18e3b”>

</assemblyIdentity>

</dependentAssembly>

</dependency>

<trustInfo xmlns=”urn:schemas-microsoft-com:asm.v3″>

<security>

<requestedPrivileges>

<requestedExecutionLevel

level=”asInvoker”

uiAccess=”false”/>

</requestedPrivileges>

</security>

</trustInfo>

<asmv3:application>

<asmv3:windowsSettings xmlns=”http://schemas.microsoft.com/

SMI/2005/WindowsSettings”&gt;

<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings=”

http://schemas.microsoft.com/SMI/2005/WindowsSettings”>

false</ms_windowsSettings:dpiAware&gt;

</asmv3:windowsSettings>

</asmv3:application>

</assembly>

Как настроить нормальный масштаб интерфейса, размер фонтов в клиенте удаленного рабочего стола RDP при высоком разрешении экрана–самый простой и работоспособный вариант (Remote Desktop DPI scaling issues)

Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365

+11
голос

Напечатать Отправить другу

Читайте также

Очень ждем обзора Lenovo ThinkPad T580

Игорь, в 2004 сборке Вин 10 перестал работать это фикс с манифестом (равно как и прочие, с дубликатом mstsc.exe и правкой mui-файла, например).
Это МС что-то опять "сломала" в самом клиенте РДП свежей версии винды, или в манифесте нужно исправить имена/версии/токены зависимостей?

Подякував.

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT