Развертывание –> Совместимость приложений
Совместимость существующих приложений является наиболее частой причиной отказа от перехода на новую версию клиентской или серверной операционной системы или существенных задержек с эти процессом. В компаниях могут использоваться сотни и даже тысячи различных приложений, включая приложения, автоматизирующие различые бизнес-процессы, приложения, критичные для повседневной работы и дополнительные приложения, позволяющие выполнять те или иные бизнес-задачи. Наиболее часто возникающие вопросы могут быть сформулирвоаны следующим образом:
И так далее… При этом необходимо понимать, что в зависимости от конкретного приложения и его типа проблемы с совместимостью с новой версией операционной системы могут сильно отличаться. Например, приложения, которые используют минимальное число системных функций (например, бизнес-приложения), обычно менее подвержены проблемам совместимости по сравнению с приложениями типа антивирусов, брэндмауеров, расширений для Windows Logon и т.п. В отличие от предыдущих версий операционной системы, например, Windows XP, в Windows 7 проблемы с совместимостью приложений можно разделить на три основные категории – изменения между версиями операционной системы, изменения, связанные с улучшениями в безопасности системы и новые технологии на уровне ядра операционной системы. Изменения между версиями операционной системы включают изменения номера версии и, обычно, происходят от релиза к релизу. Приложения часто проверяют номер версии операционной системы для того, чтобы убедиться в том, что они запускаются именно на той версии системы, для которой они разработаны. Такие проверки изменяются наиболее простым способом – либо на уровне изменений в исходном коде приложения, либо с помощью соответствующих системных механизмов. Изменения, связанные с улучшениями в безопасности системы могут привести к возникновению проблем, связанных с записью в защищенные области файловой системы или реестра или попытками выполнения привилегированных операций. Механизм Windows Resource Protection (WRP) защищает многие системные области реестра и для предотвращения потенциальных конфликтов для приложений используется автоматическое перенаправление записи в файловую систему (т.н. file virtualization) и в отдельные ветви реестра (registry virtualization). Помимо этого, наличие подсистемы User Account Control (UAC) требует, чтобы для выполнения привилегированных операций приложения запускались под учетной записью администратора. Отметим также, что в Windows 7 Internet Explorer работает в защищенном режиме (Protected Mode), что наделяет код, выполняющийся под его управлением, существенно меньшими, по сравнению c Windows XP. Эти ограничения могут повлиять на работу с некоторыми веб-приложениями, которые пытаются выполнять привилегированные операции. И, наконец, за счет постоянных инноваций на уровне ядра операционной системы приходится отказываться от поддержки ряда устаревших технологий. Так, в 64-битной версии Windows 7 не могут выполняться 16-битные приложения, а также 32-битные приложения, зависящие от 32-битных драйверов. Также следует иметь в виду, что часто используемые недокументированные функции и внутренние структуры данных могут быть несовместимимы с Windows 7. Наличие новой, более надежной и безопасной подсистемы защиты сетей на уровне брендмауера может быть причиной несовместимости на уровне антивирусов, разработанных для Windows XP. Перечислим наиболее частые причины несовместимости приложений:
Ряд механизмов, встроенных в Windows 7, позволяет адресовать перечисленные выше проблемы и, таким образом, большинство приложений будет продолжать работать на Windows 7 также, как и под управлением предыдущих версий операционной системы. Рассмотрим наиболее частые причины несовместимости приложений более подробно. Изменение номера версии операционной системыНеверная проверка номера версии операционной системы является причиной более 50% всех проблем, связанных с запуском приложений под Windows 7. Чем это вызвано? Многие приложения проверяют только старший номер версии операционной системы или используют старший и младший номер для проверки конкретной версии ОС. Например, следующая проверка if (majorVersion >= 5 && minorVersion >= 1) не вызовет проблем в Windows 7 (версия 6.1), но не позволит запустить приложение под Windows Vista (версия 6.0). Как данная проверка работает в ряде версий операционной системы показано в следующей таблице:
Выполнение приложений, требующих повышения привилегийНачиная с операционной системы Windows Vista на уровне ядра появился механизм, благодаря которому все пользователи по умолчанию работают под учетной записью «Standard User». Такое изменение связано с тем, что операционная система подвергается существенным рискам когда пользователь работает под учетной записью Administrator - это и более простая установка вредоносного кода, и возможность повышения привилегий для него и большая вероятность того, что пользователи могут внести повреждения в саму систему. Данный механизм называется User Account Control (UAC) и он базируется на двух расширениях на уровне ядра операционной системы – т.н. фильтрации маркера доступа (filtered token) и новых интерфейсных элементах для повышения привилегий. Чтобы увидеть эффект фильтрации маркера доступа выполните следующие действия:
Рис. Набор привилегий для стандартного пользователя Рис. Набор привилегий для администратора При попытке запуска приложения, выполняющего операции, требующие повышенных привилегии, система, в зависимости от учетной записи, под которой запускается приложение:
Реализация механизма UAC влияет не только на запуск ряда приложений – повышение привилегий требуется, например, для установки приложений – операционная система содержит ряд алгоритмов, позволяющих автоматически определить программы установки (инсталляторы) – таковыми, например, считаются приложения с именами Setup, Install, Update, Patch и требует повышенных привилегий для их запуска. Некорректное использование специальных областей файловой системы и реестраУпомянутый выше механизм Windows Resource Protection защищает ряд областей файловой системы и реестра от доступа на уровне пользовательского кода. Для того, чтобы приложения, написанные для предыдущих версий операционной системы могли продолжать работать в Windows 7, на уровне ядра реализован механизм перенаправления ряд файловых операций и операций с реестром. Механизм перенаправления работает для файловых операций с каталогами
- чтение и запись перенаправляются в каталог %LOCALAPPDATA%\VirtualStore. Чтобы увидеть работу этого механизма на практике, выполните следующие действия:
Как перенаправление операций с файловой системой влияет на совместимость приложений? Так как механизм перенаправления работает прозрачно для «старых» приложений (приложений, у которых нет специального XML-файла, называемого «манифестом» и содержащего опцию необходимых для запуска приложения привилегий), пользователи должны уметь находить создаваемые такими приложениями файлы – для этого в Windows Explorer и реализована команда «Compatibility Files». Помимо рассмотренных выше причин несовместимости приложений, можно также отметить влияние механизмов Mandatory Integrity Control (MIC) и User Interface Privilege Isolation (UIPI) на выполнение таких операций, как Drag and Drop. Т.к. механизм Drag and Drop основан на обмене сообщениями между приложением-источником и приложением-приемником, они должны выполняться на одном и том же уровне привилегий – в противном случае обмен сообщениями между менее привилегированным и более привилегированным приложением не состоится – никаких сообщений об ошибке показано не будет, но операция Drag and Drop не сможет быть выполнена. Также отметим такие причины, как изоляция нулевой сессии (влияет на работу интерактивных сервисов и создание глобальных/локальных объектов), работа Internet Explorer в режиме Data Execution Prevention (DEX) – может повлиять на работоспособность ряда расширений, написанных для предыдущих версий браузера и расширенную поддержку High DPI – в последнем случае приложения, написанные для предыдущих версий операционной системы продолжают работать, но возможны искажения на уровне пользовательского интерфейса – в Windows 7 есть средства, позволяющие это исправить – мы рассмотрим их далее. Оставайтесь с намиВ следующей части мы рассмотрим инструменты и способы разрешения проблем совместимости приложений с операционной системой Windows 7. Автор: Алексей Федоров Продолжить обучение |