Пользователи при подключении к терминальной сессии на RDS (RDP) сервере могут столкнуться с тем, что шрифты, значки, тексты и другие элементы UI в окне удаленного стола отображаются очень мелкими, плохо читаемыми. Чаще всего на это жалуются пользователи с FullHD / HiDPI (Retina) мониторами с высоким разрешением (2к, 4к).
Настроить параметры масштабирования в окне терминального сервера невозможно, потому что в панели Дисплей отображается сообщение:
Параметры дисплея невозможно изменить во время удаленного сеанса.
Display settings can't be changed from a remote session.
В Windows Server 2019/2016/2012R2 (и Windows 10) настройки RDP сессии по умолчанию наследуют настройки масштабирования с клиентской машины. По умолчанию настройки DPI в удаленном сеансе изменить нельзя. Если вы установите масштаб 125% на клиенте, эти же настройки масштабирования применятся к терминальной сессии.
Отключить наследование настроек DPI с клиента можно, создав параметр реестра IgnoreClientDesktopScaleFactor = 1:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations" /f /v IgnoreClientDesktopScaleFactor /t REG_DWORD /d 1
Текущий сеанс пользователя нужно завершить (
logoff
).
После этого может задать параметры масштабирования, внеся изменения в ветку реестра пользователя:
- Перейти в раздел
HKCU\Control Panel\Desktop
- Создать REG_DWORD параметр с именем LogPixels
- Задайте параметры масштабирование (значение в десятичном формате):
96
— для масштабированиея 100%
120
— 125%
144
— 150%
192
— для 200% (хорошо подходит для 4к мониторов)
288
— для 300%Можно задать этот параметр командой:reg add "HKCU\Control Panel\Desktop" /f /v LogPixels /t REG_DWORD /d 144
- Завершите сеанс:
logoff
desktopscalefactor
.
desktopscalefactor:i:150
Допустимые значения: 100, 125, 150, 175, 200
https://learn.microsoft.com/en-us/azure/virtual-desktop/rdp-properties
В Windows Server 2022 и 2025 параметр IgnoreClientDesktopScaleFactor не работает (игнорируется), и параметры масштабирования рабочего стола DPI всегда берутся с клиента. В качестве обходных вариантов предлагается:
- Выбрать на клиентском компьютере параметры масштабирования, которые хорошо выглядят и на локальном компьютере, и в RDP сессии.
- Использовать Windows App (ранее Microsoft Remote Desktop) приложение из Microsoft Store, или альтернативный RDP клиент (mRemoteNG, RDCMan)
Еще одна функция mstsc клиента, которая позволяет целиком поместить окно удаленного рабочего стола в окне RDP без использования полос прокрутки– динамическое масштабирование (smart sizing).
Включить режим динамического масштабирования можно, добавив в текстовый *.RDP файл на клиенте строку:
smart sizing:i:1
В новых версиях RDP клиента опцию Smart Sizing можно на ходу, включив соответствующую опцию в меню, доступное в верхнем левом окне RDP клиента.
Когда эта функция включена, при изменении размера клиентского окна, изображение удаленного рабочего стола автоматически масштабируется так, чтобы целиком поместится в него.
Вот это респект. Блин, круто! Я думал уже себе какой-нибудь UltraRDP ставить, а тут такой параметр клёвый. Спасибо!
если RDP настроен на запуск программы то параметры screen mode id:i: , smart sizing:i:, desktopwidth:i:, desktopheight:i:не работают, может кто знает как победить
Вы имеет в виду запуск программы в RDP сессии через скрипт или речь о RemoteApp?
Имелось ввиду похоже, — задание программы во вкладке «Среда» удалённого подключения или учётки AD.
Я поддерживаю вопрос выше, а также хотелось бы понять — как можно принудительно на терминалке выставить одно разрешение для рабочего стола пользователя, если задан запуск программы в среде пользователя?
Чтобы не передавалось разрешение экрана компьютера пользователя, с которого он подключается, а менялось на какое то стандартное. Задача простая как божий день, но решение уже час не могу найти !!
Не сталкивался с такой задачей.
Т.е. нужно чтобы опубликованное приложение запускалось в полном окне? Или нужно окно фиксированного размера?
Для первого случай mstsc.exe есть ключ /v (и ползунок на вкладке экран)
Для второго случая есть параметр desktop size id (если уж desktopheight и desktopwidth игнорируются)
0 – 640×480.
1 – 800×600.
2 – 1024×768.
3 – 1280×1024.
4 – 1600×1200.
.
Спасибо за ответ )
ДА
Нужно , чтобы запускалось в полном окне, при этом разрешение в терминальной сессии было меньше, чем на рабочем столе ПК пользователя.
Про desktop size id погуглю, спасибо )
desktopheight и desktopwidth не получилось, разрешение осталось таким же, как и рабочий стол пк, с которого совершалось подключение …
правой кнопкой по значку рдп, изменить — вкладка экран- убираем галочку использовать все мои мониторы для удаленного сеанса -ползунок до конца чтобы под ним было написано во весь экран. и будет вам счастье….
Я нашел решение для windows server 2019. Оно игнорирует масштаб рабочего стола пользователя.
Windows Server 2019 масштабирование рабочего стола в RDP
В Windows Server 2016\2019 было такое решение проблемы:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations]
«IgnoreClientDesktopScaleFactor»=dword:00000001