2

Некоторые приложения плохо масштабируются на экранах с высоким разрешением. Одно из предложенных решений для этого в Windows (например, для приложений Adobe CS6) состоит в том, чтобы « разрешить Windows определять приоритеты внешних манифестов» с изменением реестра, а затем создать манифест для приложения, который указывает Windows применять масштабирование интерфейса пользователя по умолчанию.

Я твердо верю в то, что нельзя вносить изменения на уровне системы, такие как изменения в реестре, без предварительного понимания их значения. Я пытался исследовать, чтобы Windows могла определять приоритеты внешних манифестов, чтобы узнать больше, но все, что я нахожу, это примеры того, как этот хак используется для масштабирования различных упрямых приложений на экранах с высоким разрешением.

Я полагаю, что это изменение реестра по существу позволяет определенному типу файла конфигурации (.manifest) быть прочитанным, когда приложения запущены (?). Я хотел бы понять, каковы их последствия. Наиболее близким ответом на мои исследования я нашел этот многообещающий, но далеко не авторитетный комментарий на форумах Adobe. Я хотел бы знать, правда ли это или нет:

Что касается других последствий изменения реестра, если у вас нет других файлов .manifest вместе с исполняемыми файлами, которые находятся в конфликте с теми, которые находятся внутри самих исполняемых файлов - что должно быть весьма необычно - это, кажется, изменение с маленький недостаток.

В частности (по порядку):

  1. Правда ли, что это изменение реестра не повлияет на поведение системы, за исключением случаев, когда я вручную создаю файл манифеста для приложения? Эта статья заставляет меня думать, что это так. Или это имеет другие последствия (например, может быть, проверка на манифесты достаточно распространена, чтобы замедлить определенные системные процессы?)
  2. Ясно, что существует риск, что неправильно настроенный манифест нарушит работу одного приложения. Существуют ли дополнительные риски, такие как проблемы безопасности (манифесты, создающие вредоносное ПО?) о чем должен знать конечный пользователь, прежде чем включать его?
  3. Эта статья MSDN звучит так, как будто в ней говорится, что существуют манифесты, позволяющие переопределять реестр для конкретного приложения. Это правильная интерпретация, в непрофессиональных терминах?

Если версия для Windows актуальна, меня больше всего интересуют Windows 8.1 и Windows 7 (в таком порядке).

1 ответ1

4

Файлы манифеста содержат настройки для Windows о том, как обрабатывать модуль при запуске. Как вы уже поняли, он может быть встроен в сам модуль или находиться снаружи как файл * .manifest. Обычно встроенный имеет приоритет, так что внешний не будет учитываться, если у модуля уже есть встроенный. Параметр реестра изменяет это поведение, чтобы сначала считать внешние.

  1. Я не верю, что приоритизация внешних манифестов замедлит работу системы. Большинство процессов будет работать в обычном режиме после проверки отсутствия внешнего. Даже если они существуют, файлы манифеста являются небольшими XML-файлами, поэтому для их обработки не требуется много времени.

  2. Там было несколько случаев, как вы сказали. Пример: http://www.symantec.com/security_response/vulnerability.jsp?bid=21550 Так что из соображений безопасности я думаю, что безопаснее вообще не приоритезировать внешние манифесты, даже если в Windows нет постоянных проблем.

  3. В статье говорится, что та же цель была достигнута с Registry в прошлом. Теперь все по-другому, потому что модули могут иметь внутренние манифесты. Кроме того, манифесты не могут использоваться в качестве общей виртуализации реестра.

На самом деле, есть способ изменить "внутренний" манифест. Эта статья иллюстрирует, как сделать это на свой страх и риск. http://csi-windows.com/toolkit/240-great-pe-editor-for-internal-manifests

Я проверил этот трюк с приложением, разработанным мной, и работал нормально. Обратите внимание, что вы должны начать с "режима разработчика", чтобы сохранить исполняемый файл, необходимо удалить существующий манифест, а затем повторно добавить новый манифест. Не говоря уже о том, что не забудьте сделать резервную копию оригинала.

Если этот трюк работает для вас, это будет намного лучше, чем изменение приоритета. Однако - коммерческие приложения могут не работать, поскольку этот способ нарушает работу цифровых подписей и может конфликтовать с защитой, если таковая имеется. Если это не сработает, лучше всего обратиться к первоначальному разработчику с просьбой изменить внутренние манифесты для более новых версий Windows или найти более новые версии программного обеспечения, которые, возможно, устранили исходную проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .