Давайте разберемся с большими пушками.
Загрузите и установите набор средств для обеспечения совместимости приложений. Это включает в себя программу под названием «Администратор совместимости», которая поставляется в двух версиях:32-разрядной и 64-разрядной. Запустите приложение с той же разрядностью, что и у приложения, которое вы хотите взломать.
Предыстория: многие приложения утверждают, что поддерживают определенную функцию, но затем портят реализацию. Microsoft постоянно занимается этим, и они создали инфраструктуру совместимости, чтобы повторно использовать исправления для распространенных проблем. Эти исправления реализованы в виде прокладок, перехватывающих вызовы Windows API. Мы будем использовать прокладку, которая эффективно отменяет декларацию приложения о осведомленности о DPI. Другие прокладки делают более изящные / настраиваемые вещи (см. CorrectFilePaths
), в то время как некоторые просто лгут приложению о его среде (например, ForceAdminAccess
).
В нижней части левой панели администратора совместимости вы увидите новую запись в пользовательских базах данных. Щелкните правой кнопкой мыши и выберите « Создать» → « Режим совместимости». Назовите это как-нибудь (я использовал DpiMisbehavior
). В левом списке найдите DPIUnaware
и нажмите кнопку >
, чтобы включить его. Нажмите OK, как только вы это сделали.
Снова щелкните правой кнопкой мыши на пользовательской базе данных и выберите « Создать» → « Исправление приложения». Укажите название программы и поставщика (это не имеет большого значения) и выберите основной EXE-файл приложения. (Именно здесь важна разрядность администратора совместимости.) Нажмите Next, когда вы это сделаете.
В Дополнительных режимах совместимости прокрутите вниз и найдите режим совместимости, который вы создали недавно. Проверьте свою коробку. Сделайте тестовый прогон, если хотите, затем нажмите Next.
Теперь, строго говоря, вам не нужно было создавать режим совместимости, потому что вы можете применить определенные исправления здесь. Я попросил вас сделать это на тот случай, если позже вам понадобится добавить дополнительные исправления в этот режим, чтобы они применялись ко всем приложениям, которые вы включили в этот режим. Таким образом, вы можете просто нажать «Далее», ничего не делая на шаге « Исправления совместимости» .
Соответствующая информация используется для определения того, какое приложение представляет программа (EXE). (Было бы весьма прискорбно, если бы исправления были применены к программам, которые в них не нуждаются.) Все проверенные записи должны соответствовать программе, чтобы получить исправление. Администратор совместимости извлек эти значения критериев из EXE-файла, который вы указали ранее. По умолчанию все в порядке, или вы можете изменить их, если вы сильно относитесь к таким вещам. Нажмите Finish, когда будете довольны.
Повторите процесс создания Application Fix для каждой программы, которая в этом нуждается. Затем нажмите Сохранить на панели инструментов. Дайте ему любое имя, какое захотите; Я использовал DPI Repair
. Затем сохраните его в нужной вам файловой системе. Вы можете использовать элемент Открыть панель инструментов и выбрать этот файл, если вам нужно изменить его в будущем.
Наконец, щелкните правой кнопкой мыши новую базу данных с именем и выберите « Установить».
О да.
Если в будущем вам потребуется изменить базу данных совместимости, просто откройте ее, внесите соответствующие изменения, нажмите «Сохранить», а затем выполните «Переустановка»; это просто пойдет по старой версии. Фактически, вы можете скопировать эту базу данных на другой компьютер и использовать Администратор совместимости, чтобы установить ее там без необходимости ее повторного создания.
Дополнительное развлечение: разверните запись Приложения в Системной базе данных, чтобы увидеть список программ, которые Microsoft должна была исправить с помощью этой инфраструктуры. Нажатие на запись программы покажет вам, какие исправления и режимы совместимости были применены. В разделе Исправления совместимости вы можете увидеть полный список исправлений, которые может использовать ваш компьютер.