Как изменить разрешение экрана на удаленном рабочем столе
Домівка Как настроить нормальный масштаб интерфейса, размер фонтов в клиенте удаленного рабочего стола RDP при высоком разрешении экрана–самый простой и работоспособный вариант (Remote Desktop DPI scaling issues)
У меня появился новый ноутбук – можно сказать, классика рабочего жанра – Lenovo ThinkPad T580. В этом ноуте все отлично – и характеристики его железа (на канале будет отдельный обзор), и, собственно дизайн, вес и прочие эргономические вещи… И как главная плюшка – у ноута отличный 15” экран с разрешением 3840х2160 – 4К.
Но, как часто бывает – все эти плюшки не только приятны, но и имеют отрицательные стороны. Вы видели, какой масштаб PPI (DPI) стоит для таких вот 15” экранов 4К 3840х2160, подобных Lenovo ThinkPad T580?! – правильно, 250% по умолчанию! Т.е. именно настолько масштабируется изображение, чтобы текст на экране был читаемый глазом, а в элементы управления можно было попадать мышкой. Кто не знаком с эффектом DPI/PPI на маленьких экранах с большим разрешением (от 4К и выше) – рекомендую заглянуть в настройки дисплея в Windows и там поиграться в настройками Scaling’а. А для наглядности – вот вам картинка для сравнения вида интерфейса в масштабе 100% и 225%
При чем здесь 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-клиента поместится лишь часть удаленного экрана и для работы придется использовать прокрутку, что крайне неудобно.
Выходом из данной ситуации может быть режим динамического масштабирования. В этом режиме размер удаленного рабочего стола изменяется таким образом, чтобы целиком поместиться в окне RDP-клиента без использования полос прокрутки. При изменении размеров окна изображение также изменяется, автоматически подстраиваясь под нужный размер.
Динамическое масштабирование появилось еще в Windows XP, однако включить режим масштабирования можно было только отредактировав файл подключения. Для этого надо открыть файл с расширением .rdp в Блокноте (или другом текстовом редакторе)
и добавить в него такую строку:
smart sizing:i:1
После внесения изменений файл надо сохранить, и при следующем подключении RDP-клиент будет запущен в режиме масштабирования.
В восьмой версии RDP клиента в Windows Server 2012 и Windows 8 появилась возможность управлять масштабированием на лету, прямо из графического интерфейса. Для включения масштабирования достаточно кликнуть правой клавишей мыши в левом верхнем углу окна RDP и отметить в контекстном меню пункт Интеллектуальное изменение размера (Smart sizing).
Примечание. Для Windows Server 2008 R2 и Windows 7 RDP 8.0 можно установить отдельно, в виде обновления.
Чтобы увидеть весь удаленный рабочий стол в окне rdp клиента необходимо сделать так, чтобы разрешение экрана на данном компьютере совпадало с разрешением экрана на удалённом компьютера (это достигается соответствующей настройкой в rdp клиенте). Однако это может быть не всегда удобно или достижимо, например, в случаях rdp доступа с нетбука к рабочему столу рабочей станции (разрешение которой больше, чем разрешение монитора, с которого осуществляется соединение) либо при необходимости работы в небольшом rdp окне с измененными размерами.
Функция динамического масштабирования изображения в окне терминальной сессии (“smart-sized” mode) впервые появилась еще в Windows XP (пользователи Remote Assistance, вероятно, помнят режим масштабирования изображения при изменении размера окна). Режим smart-size подразумевает, что весь удаленный рабочий стол целиком помещается в клиентском окне (без использования полос прокрутки), а при изменении размера клиентского окна, изображение автоматически масштабируется так, чтобы целиком поместится в него.
RDP сессия в режиме масштабирования (smart-size) выглядит так:
При отключенном режиме smart-size в окне RDP сессии помещается лишь часть изображения рабочего стола, и для его просмотра нужно использовать полосы прокрутки.
В Windows XP и Windows 7 включить режим масштабирования в терминальном клиенте возможно было только отредактировав .rdp файл. Для этого необходимо было открыть файл с расширением .rdp с помощью любого текстового редактора и добавить строку:
smart sizing:i:1
Затем изменения в файле нужно сохранить и при следующем запуске RDP клиента он будет открываться в режиме масштабирования (smart-size).
Для этого щелкните по элементу в верхнем левом углу окно RDP и отметьте опцию Smart Sizing. Режим работы rdp клиента изменится со «статического разрешения» на динамическое, зависящее от размеров окна.
Теперь при изменении размеров окна rdp сессии, его содержимое будет автоматически масштабироваться так, чтобы целиком поместится в окошко.
Отметим, что возможность масштабирования в таком инструменте Windows-администратора, как Remote Desktop Connection Manager, позволяющего удобно организовать rdp работу со множеством Windows серверов, отсутствует.
При использовании мониторов с высоким разрешением (4k DPI) в Windows 10 пользователи часто сталкиваются с тем, что текст, значки и другие элементы устаревших программ, несовместимых с экранными режимами HiDPI, становится слишком мелким, размытыми и нечитаемыми.
Частично эта проблема была исправлена в обновлении Fall Creators Update за счет внедрения дополнительной поддержки динамического масштабирования DPI, однако при подключении к рабочему столу удаленного компьютера по RDP, проблема масштабирования все еще сохраняется (все также отсутствует поддержка нормального масштабирование для клиента mstsc.exe).
В Windows 8.1 и Windows 10 по-умолчанию локальный DPI передается в RDP подключение, в результате все значки и текст в таком окне становятся очень мелкими и плохо читаемыми.
В качестве обходного пути можно использовать для RDP подключений приложение RDCMan , но есть решение и для родного клиента mstsc.exe .
Смысл в том, что для конкретных приложений можно создать отдельный файл манифеста (.manifest).
Чтобы этот функционал заработал, чтобы Windows при запуске приложения пыталась сначала получить данный из файла манифеста приложения. Для этого в ветке реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide создать ключ типа DWORD (32 бит) со именем PreferExternalManifest и десятичным значением 1 .
Затем в каталоге %SystemRoot%\System32\ (в нем хранится клиент mstsc.exe) нужно создать файл mstsc.exe.manifest со следующим текстом:
Примечание . Данные значения для файла манифеста можно получить самостоятельно из .exe файла приложения с помощью утилиты Resource Hacker. Для этого нужно открыть файл mstsc.exe с помощью Resource Hacker. Скопируйте данные из раздела Manifest->1->1033 (для английской Windows) и добавьте секцию с флагом dpiAware со значением false.
Перезагрузите Windows, и попробуйте удаленно подключиться к другому компьютеру/серверу с помощью mstsc.exe. Как вы видите, содержимое RDP окна теперь отображается нормально.
Аналогичным образом можно создать файл манифеста для любого приложения, который не поддерживает нативное масштабирование.
Читайте также: