Размытый текст в старых приложениях на 4K-мониторе, некорректное отображение интерфейса в виртуальной машине, элементы управления, которые «убегают» за границы окна - эти проблемы знакомы каждому системному администратору. Решение есть: Windows 10 (сборки 1809–22H2) позволяет гибко управлять DPI-масштабированием для отдельных программ через три независимых механизма. В этом чек-листе собраны только рабочие команды, пути в реестре и проверенные методы, которые вы сможете применить за 10 минут.
Масштабирование в Windows 10 работает через параметр DPI Awareness - флаг, который сообщает системе, умеет ли приложение самостоятельно обрабатывать высокое разрешение. Если флаг отсутствует или установлен некорректно, система применяет виртуализацию DPI: растягивает окно программы как растровое изображение. Результат - размытые шрифты и нечёткие элементы. Вы можете переопределить поведение через свойства совместимости, реестр или внешний манифест. Каждый метод покрывает свой сценарий: от быстрого исправления одного приложения до централизованного развёртывания через GPO.
Проверка версии и сборки Windows 10
Перед настройкой убедитесь, что ваша система поддерживает все описанные методы. Функция «Переопределение масштабирования с высоким разрешением» появилась в Windows 10 1803, но стабильное поведение гарантировано начиная с 1809. Для сборок 21H2 и 22H2 доступны дополнительные параметры в групповых политиках.
Откройте окно «Выполнить» (Win + R) и введите winver. Запомните номер версии и сборки. Если вы работаете с виртуальной машиной, проверьте, установлены ли Integration Services или Guest Additions - без них гостевые ОС могут некорректно определять физическое разрешение хостового монитора.
Метод 1: Свойства совместимости
Самый быстрый способ исправить масштабирование для конкретной программы. Подходит для разовых настроек на локальной машине.
- Найдите исполняемый файл приложения (
.exe) или его ярлык на рабочем столе. - Кликните правой кнопкой мыши и выберите «Свойства».
- Перейдите на вкладку «Совместимость».
- Нажмите «Изменить параметры высокого DPI».
- В разделе «Переопределение масштабирования» установите флажок «Переопределить режим масштабирования с высоким разрешением».
- В выпадающем списке выберите один из трёх вариантов:
- Приложение - программа сама управляет масштабированием. Используйте, если приложение поддерживает HiDPI, но система этого не распознала.
- Система - масштабированием управляет Windows. Подходит для большинства старых программ: интерфейс будет чётким, но может измениться размер элементов.
- Система (расширенное) - улучшенный вариант для приложений на GDI. Решает проблему размытых шрифтов в программах, которые используют старые API отрисовки текста.
- Нажмите «ОК» и перезапустите приложение.
Этот метод создаёт ключ в реестре по пути HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers. Значение параметра - строка с флагами, например ~ HIGHDPIAWARE или ~ GDIDPISCALING. Если вам нужно применить настройки для всех пользователей компьютера, используйте методы ниже.
Метод 2: Редактирование реестра
Прямая работа с реестром даёт полный контроль над параметрами масштабирования. Этот подход незаменим при автоматизации через скрипты или развёртывании через GPO.
Настройка для текущего пользователя
Откройте редактор реестра (regedit.exe) и перейдите в ветку:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Создайте строковый параметр с именем, равным полному пути к исполняемому файлу (например, C:\Program Files (x86)\OldApp\app.exe). В качестве значения укажите один или несколько флагов через пробел:
~ HIGHDPIAWARE- приложение самостоятельно обрабатывает DPI.~ GDIDPISCALING- включить расширенное масштабирование GDI (убирает размытость шрифтов).~ PERPROCESSSYSTEMDPIFORCEOFF- отключить принудительное системное DPI-масштабирование для процесса.~ PERPROCESSSYSTEMDPIFORCEON- принудительно включить системное масштабирование.
Настройка для всех пользователей
Для применения параметров ко всем учётным записям на компьютере используйте ветку:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Синтаксис значений идентичен пользовательской ветке. Изменения в HKLM требуют прав администратора и вступают в силу после перезагрузки или перезапуска приложения.
Массовое применение через PowerShell
Для автоматизации настройки на десятках машин используйте PowerShell-скрипт. Пример для добавления флага ~ GDIDPISCALING для приложения OldApp.exe всем пользователям:
$regPath = "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
$appPath = "C:\Program Files (x86)\OldApp\OldApp.exe"
$flags = "~ GDIDPISCALING"
New-ItemProperty -Path $regPath -Name $appPath -Value $flags -PropertyType String -Force
Готовые скрипты для массовой настройки DPI с проверкой ошибок и логированием вы найдёте в руководстве по автоматизации настройки высокого DPI.
Метод 3: Внешний манифест приложения
Манифест - это XML-файл, который сообщает Windows о поддержке приложением высоких разрешений. Метод не требует прав администратора для изменения реестра и работает даже в заблокированных средах. Файл манифеста размещается рядом с исполняемым файлом и имеет имя app.exe.manifest (где app.exe - имя вашего приложения).
Создайте текстовый файл со следующим содержимым:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</windowsSettings>
</application>
</assembly>
Сохраните файл в кодировке UTF-8 в ту же папку, где находится .exe. Например, для C:\App\program.exe манифест должен называться C:\App\program.exe.manifest. Перезапустите приложение. Windows обнаружит внешний манифест и применит указанные настройки DPI.
Параметр dpiAware со значением true указывает, что приложение осведомлено о DPI. dpiAwareness со значением PerMonitorV2 - наиболее современный режим, при котором программа корректно перерисовывается при перемещении между мониторами с разным масштабированием. Если приложение не поддерживает PerMonitorV2, замените значение на System.
Этот метод особенно полезен для legacy-приложений, которые вы не можете модифицировать, но имеете доступ к файловой системе. В средах с глубокой защитой (AppLocker, WDAC) убедитесь, что политики не блокируют чтение внешних манифестов.
Тестирование изменений
После применения любого из методов выполните проверку по чек-листу:
- Запустите приложение и оцените чёткость текста. Сравните с эталонным скриншотом, если он есть.
- Проверьте все элементы интерфейса: кнопки, выпадающие списки, поля ввода. Убедитесь, что они не обрезаны и не накладываются друг на друга.
- Переместите окно между мониторами с разным масштабированием (например, 100% и 150%). Приложение должно корректно перерисоваться без размытия.
- Сверните и разверните окно, измените его размер. Интерфейс должен оставаться стабильным.
- Проверьте работу приложения под разными учётными записями, если настройки применялись через HKLM.
Если приложение по-прежнему отображается некорректно, попробуйте комбинацию методов. Например, флаг ~ GDIDPISCALING в реестре вместе с внешним манифестом часто решает проблему размытых шрифтов в старых бухгалтерских программах. Подробный разбор причин нечёткого текста и методы их устранения - в статье про настройку масштабирования на нескольких мониторах.
Типичные проблемы и их решения
Размытый текст остаётся после применения всех методов. Включите в свойствах совместимости режим «Система (расширенное)» и дополнительно установите флаг ~ GDIDPISCALING через реестр. Для приложений на .NET Framework версии ниже 4.6.2 может потребоваться добавление параметра DpiAwareness в конфигурационный файл app.config.
Приложение отображается слишком мелким или слишком крупным. Проверьте, не установлено ли в системе кастомное масштабирование (более 500%). Windows 10 некорректно обрабатывает значения выше 500% для некоторых приложений. Верните стандартное значение: «Параметры» → «Дисплей» → «Масштаб и разметка» → выберите 100%, 125%, 150% или 175%.
Настройки не применяются для всех пользователей. Убедитесь, что вы используете ветку HKLM, а не HKCU. Проверьте права на запись в HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers. В доменной среде настройки могут перезаписываться групповыми политиками - проверьте результирующий набор политик через rsop.msc.
Групповые политики для доменного развёртывания
Для централизованной настройки масштабирования в домене Active Directory используйте административные шаблоны. Путь в редакторе GPO:
Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Сопоставление файлов
Включите политику «Использовать сопоставление файлов для управления параметрами совместимости приложений» и укажите путь к XML-файлу с конфигурацией. Формат файла совпадает со структурой внешнего манифеста. Политика применяется при следующем обновлении групповых политик.
Для сред с Kubernetes и контейнеризованными приложениями, где масштабирование также критично для интерфейсов управления, ознакомьтесь с руководством по наблюдаемости высоконагруженных систем - принципы мониторинга и алертов, описанные там, применимы и к отслеживанию корректности DPI-настроек на парке рабочих станций.
Фиксация изменений в документации
Задокументируйте выполненные настройки. Для каждой программы, для которой вы переопределили масштабирование, запишите:
- Полный путь к исполняемому файлу.
- Применённый метод (свойства совместимости, реестр, манифест).
- Конкретные флаги и значения.
- Дату изменения и версию сборки Windows.
Эти данные сохраните в базе знаний команды. При миграции на новые версии Windows или переустановке рабочих станций документация сократит время повторной настройки с часов до минут. Для организации структурированной базы знаний IT-отдела используйте сравнение платформ для IT-базы знаний - там разобраны критерии выбора между Confluence, BookStack, Outline и DokuWiki с учётом интеграции с Git и CI/CD.