Windows Vista / Windows 7 – вопросы совместимости приложений


Совместимость существующих приложений с операционной системой Microsoft Windows Vista (и выходящей в этом году операционной системой Windows 7, построенной на ядре Windows Vista) является одной из основных проблем, с которой могут столкнуться пользователи, переходящие на новую версию операционной системы. Несмотря на усилия, прилагаемые компанией Microsoft, некоторые производители программного обеспечения продолжают использовать устаревшие функции операционной системы, некорректно выполняют операции по проверке версий ОС (более 50% всех отказов в запуске приложений), не следуют рекомендациям по работе с файловой системой и, часто, не руководствуются советами по обеспечению корректной работы приложений в новых версиях системы. Все это приводит к тому, что в операционной системе Microsoft Windows Vista есть более 5600 «системных заплаток» (shims) для обеспечения корректной работы приложений различных производителей – от утилит китайских производителей до крупных продуктов известных фирм. В Windows 7 число «системных заплаток» увеличилось – в бета-версии новой операционной системы их насчитывается более 5700!

Можно выделить три основных подхода к обеспечению совместимости приложений – использование упомянутых выше «системных заплаток», запуск приложения в виртуальной среде (терминальные сервисы или использование Microsoft Application Virtualization) и, изменение кода приложения таким образом, чтобы оно соответствовало требованиям по корректной работе в операционной системе – для этого служат руководства по сертификации приложений для получения логотипов Works With Windows Vista и Certified for Windows Vista, а также соответствующие тест-кейсы, которые можно найти на сайте http://www.innovateon.com в разделе, посвященном Windows Vista.

Описанные выше ключевые причины несовместимости приложений вынудили компанию Microsoft реализовать на уровне ядра операционной системы специальный механизм, известный под названием Application Compatibility Infrastructure, в задачу которого входит имитация функционирования ОС в режиме совместимости с предыдущими версиями и, в ряде случаев, даже внесение ошибок, на наличие которых завязана функциональность приложений сторонних разработчиков – даже в том случае, когда эти ошибки обнаружены и устранены в текущей версии ОС.

Средства обеспечения совместимости можно условно разделить на три уровня: средства операционной системы, набор бесплатных утилит, «заплатки», создаваемые специалистами Microsoft.

Средства операционной системы

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

Вкладка Совместимость панели Свойства
Вкладка «Совместимость» панели «Свойства»

Панель разделена на 3 группы – «Режим совместимости», «Параметры» и «Уровень прав». Опции в группе «Режим совместимости» позволяют запустить приложение в режиме совместимости с одной из следующих версий операционной системы Windows:

  • Windows 95; Windows 98/Me; Windows NT4 (SP5); Windows 2000; Windows XP (SP2); Windows Server 2003 (SP1)

При выборе режима совместимости для приложения включается набор системных «заплаток», которые эмулируют выбранную версию операцинной системы.

Опции в группе «Параметры» позволяют, не изменяя самой среды выполнения, задать некоторые режимы, которые помогут функционированию приложения – число цветов, разрешение экрана, масштабирование в режиме HiDPI и т.д.

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

Все изменения, внесенные в данной диалоговой панели, хранятся в системном реестре – в ветви HKEY_CURRENT_USER\Software\Microsoft\Windows NT\Current Version\AppCompatFlags\Layers

Настройки для приложения в реестре
Настройки для приложения в реестре

В приведенном выше примере мы использовали два средства обеспечения совместимости – т.н. «уровень совместимости» - в нашем случае и Windows XP SP2 – и две системные «заплатки» - DisableThemes и RunAsAdmin.

В Windows 7 появился более простой интефейс, позволяющий включать механизмы обеспечения совместимости приложений с текущей версией операционной системы. Данный интерфейс называется Program Compatibility Troubleshooter – он вызывается через Control Panel | Troubleshooting | Programs | Run programs made for previous versions of Windows или из командной строки командой

%systemroot%/system32/msdt.exe –id PCWDiagnostic

При вызове Program Compatibility Troubleshooter мы попадаем в набор экранов, которые позволяют нам либо выбрать приложение из списка, либо указать новое приложение и, ответив на ряд вопросов, попытаться решить проблемы, связанные с совместимостью.

Раздел Troubleshooting computer problems в панели управления
Раздел Troubleshooting computer problems в панели управления

Средство Program Compatibility Troubleshooter
Средство Program Compatibility Troubleshooter

Program Compatibility Troubleshooter – выбор приложения
Program Compatibility Troubleshooter – выбор приложения

Program Compatibility Troubleshooter – категории проблем
Program Compatibility Troubleshooter – категории проблем

Program Compatibility Troubleshooter – выбор версии ОС
Program Compatibility Troubleshooter – выбор версии ОС

Program Compatibility Troubleshooter – тестирование приложения
Program Compatibility Troubleshooter – тестирование приложения

Program Compatibility Troubleshooter – применение настроек
Program Compatibility Troubleshooter – применение настроек

Как видно из приведенных выше иллюстраций, Program Compatibility Troubleshooter позволяет не только выбрать определенные настройки, но и проверить работоспособность приложения и, при необходимости, вернуться в панель настроек – в этом основное отличие данного средства от непосредственного использования панели «Совместимость» в Windows Vista.

Многие проблемы, связанные с совместимостью приложений могут быть решены применением настроек на уровне панели «Совместимость» в Windows Vista или средства Program Compatibility Troubleshooter в Windows 7, но в ряде случаев может потребоваться «тяжелая артилерия».

Продолжение следует...



Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.