Проблема масштабування RDP в Windows 10 на моніторах з високою роздільною здатністю

При використанні моніторів з високою роздільною здатністю (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 з наступним текстом:





type = "win32"
name = "Microsoft.Windows.Common-Controls"
version = "6.0.0.0" processorArchitecture = "*"
publicKeyToken = "6595b64144ccf1df"
language = "*">





type = "win32"
name = "Microsoft.VC90.CRT"
version = "9.0.21022.8"
processorArchitecture = "amd64"
publicKeyToken = "1fc8b3b9a1e18e3b">






level = "asInvoker"
uiAccess = "false" />





false


Примітка. Дані значення для файлу маніфесту можна отримати самостійно з .exe файлу програми за допомогою утиліти Resource Hacker. Для цього потрібно відкрити файл mstsc.exe за допомогою Resource Hacker. Скопіюйте дані з розділу Manifest-> 1> 1033 (для англійської Windows) і додайте секцію з прапором dpiAware зі значенням false.

Перезавантажте Windows, і спробуйте віддалено підключитися до іншого комп'ютера / сервера за допомогою mstsc.exe. Як ви бачите, вміст RDP вікна тепер відображається нормально.

Аналогічним чином можна створити файл маніфесту для будь-якої програми, який не підтримує нативное масштабування.