Устранение проблем совместимости программного обеспечения. Причины возникновения проблем совместимости программного обеспечения. Для добавления оболочки совместимости

Проблема совместимости программ — это всегда проблема, особенно когда новая операционная выходит с новым ажиотажем. Это был кошмар для многих пользователей Vista, даже заставила многих пользователей Vista, чтобы вернуться к XP,что бы запускать свои любимые программы и игры.Похоже, Microsoft извлекла урок из Vista совместимости программ , и они ввели новый Мастер для решения вопросов совместимости в Windows 7 . Нет больше таких кошмаров в Windows 7 ,так как в Windows 7 есть инструмент устранения проблем с совместимостью программ .Чтобы запустить средство устранения проблем с совместимостью Windows wizard, введите в окно поиска Action Center » в меню » Пуск » и нажмите enter. Затем в левой панели Action Center, нажмите на ссылку — средство устранения , чтобы запустить мастер устранения неполадок. Нет больше таких кошмаров в Windows 7 , благодаря мастеру совместимости программ, что помогает решить большинство проблем совместимости Windows .

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

В окне поставьте галочку в поле “Дополнительные параметры”. Как только вы закончите, вы можете просто нажать кнопку Next и подождите, пока Windows создаст список программ после завершения процесса сканирования.

Если программа не указана в сформированном списке,выберите “Нет» в списке,чтобы продолжить.D новом окне нажмите кнопку обзор, и найдите EXE-файл из установленного программного обеспечения(как правило, C:\Program Files).

Нажмите кнопку » Далее » и выберите соответствующую проблему из списка » Доступные». Windows попытается исправить ошибку, и выдаст результат через несколько секунд. Опять же, если ваши беды по прежнему существуют,выберите вариант “Будет попробовать различные настройки” и повторите процедуру с другими возможными проблемами .В качестве альтернативы, вы можете также выбрать ярлык — Метод решения вашей проблемы.

*Щелкните правой кнопкой мыши на инсталлятор программы и выберите “Свойства”.

*Перейдите на вкладку “Совместимость”.

*Теперь,включите опцию “Запустить программу в режиме совместимости с: и выберите операционную систему “Windows 7”.

*Нажмите кнопку “Применить”.

*Запустите установщик для установки программного обеспечения.

26.02.2007 Алексей Гриневич, Денис Марковцев, Владимир Рубанов

Если вернуться в конец 90-х и окунуться в мир операционных систем того времени, то вряд ли у кого возникнет сомнение в безраздельном царствовании Unix-совместимых систем. На стороне Unix все — семейство этих операционных систем изучают в университетах, для него созданы сотни тысяч приложений, оно успешно применяется в различных отраслях экономики, о нем написано море книг и документации. Правда, нельзя приобрести именно Unix, а можно купить IBM AIX, BSD, HP-UX, Sun Solaris и т.д. При этом требуются дополнительные усилия для того, чтобы программа, созданная, скажем, для AIX, заработала под Solaris. Различные клоны Unix оказались слабо совместимы. Аналогичные проблемы имеются сегодня и для ОС Linux.

Для решения инфраструктурной проблемы слабой совместимости различных версий Unix в 1985 году в рамках IEEE была начата работа над стандартом, обеспечивающим переносимость программного обеспечения. В 1990 году увидел свет стандарт IEEE 1003, также получивший название POSIX , который регламентировал программные интерфейсы (API) и перечень команд Unix-клонов. Однако для игроков рынка Unix унификация породила сложные политические проблемы: любое решение, любой выбор между альтернативными вариантами для достижения согласия ведет к тому, что «более стандартным» признается решение одного производителя по сравнению с решением другого. В результате стандарт изобилует многозначными утверждениями типа «в данном случае возможен один из двух альтернативных вариантов поведения» и белыми пятнами наподобие «стандарт не регламентирует поведение функции в этом случае». В конце концов, фрагментация стала одной из основных причин поражения мира Unix. Игроки этого рынка конкурировали не только с другими типами операционных систем, но и друг с другом, вводя частные расширения и закрытые интерфейсы, ограничивая круг возможных приложений каким-либо одним клоном.

Появившаяся в начале 90-х годов ОС Linux, вобравшая в себя код, созданный в рамках движения GNU, и впитавшая основные идеи Unix, благодаря открытости и независимости стала универсальным компромиссом. Ее код реализовывался с нуля, не опираясь на какую-либо реализацию, а только на текст стандарта POSIX. В результате система получилась изначально POSIX-совместимой, а независимость позволила объединить усилия различных игроков рынка Unix в борьбе за «возврат» упущенного сегмента операционных систем для ПК. Однако проблема фрагментации осталась актуальной и для Linux: наличие конкурирующих между собой дистрибутивов вызывает опасения в вероятном повторении судьбы Unix.

На первый взгляд, сама опасность фрагментации выглядит довольно призрачной - фактически имеется общий код, большинство дистрибутивов работают на основе одного и того же ядра, одних и тех же библиотек, что во многом определяет совместимость. Казалось бы, и приложения должны сохранять работоспособность и совместимость между различными версиями Linux. Но это не получает подтверждения на практике. Наряду с фрагментацией рынка дистрибутивов Linux по подходам и дополнительной функциональности, наблюдаются существенные перекосы в поддержке различными клонами даже распространенных и стандартных приложений - в различных дистрибутивах используются разные версии ядра и системных библиотек (в первую очередь, glibc). Это ведет к тому, что состав и поведение системных интерфейсов, предоставляемых системой приложениям, меняются от дистрибутива к дистрибутиву. Для того чтобы не повторить печальный опыт клонов Unix, в 1998 году в рамках специально созданной организации Free Standards Group (сейчас Linux Foundation ) началась работа над стандартом LSB (Linux Standard Base - «базовое семейство стандартов Linux»). Благодаря усилиям со стороны организаций X/Open, IEEE и ISO, открывших стандарт POSIX и часть тестов для свободного доступа, был заложен фундамент в дело стандартизации Linux.

Но что именно и зачем нужно стандартизовать? Неужели единый открытый код сам по себе не является единым и открытым стандартом?

Проблемы совместимости приложений

Как проявляются различия между дистрибутивами Linux на практике и насколько серьезна проблема? Приведем пример. Основу коммерческих предложений корпорации IBM составляют пять линеек программных продуктов: DB2, Websphere, Rational, Tivoli и Lotus. Практика показывает, что поддержка всех пяти линеек для одного дистрибутива Linux обходится ежегодно в миллионы долларов, которые идут на разработчиков и тестировщиков, ответственных за поддержку приложений под конкретный дистрибутив Linux. Следовательно, поддерживаются те дистрибутивы, для которых прибыль от продажи продуктов превышает эти миллионы; фактически это только дистрибутивы SuSE и Red Hat. Так возникает ситуация несоответствия - то, что работает на одних дистрибутивах, не запускается на других.

Совсем другая ситуация наблюдается для Sun Solaris. Прежде всего, в Sun Microsystems гарантируют, что программа, скомпилированная для Solaris 2.6, будет работать без перекомпиляции и под версией 10. Разработчики Sun прилагают огромные усилия для этого; при каждом изменении кода прогоняется набор более чем из 2400 приложений различного назначения и состава. Более того, если кто-то обнаруживает, что приложение перестало работать по причине несовместимости между версиями Solaris, то в Sun берут на себя ответственность и расходы на исправление этого несоответствия. В случае с ОС Linux данная работа долгое время не велась, приложения и дистрибутивы жили своей собственной обособленной жизнью. Самым печальным при этом является отсутствие универсального способа написания программы таким образом, чтобы гарантированно обеспечить переносимость. На решение этой проблемы и направлены усилия консорциума Linux Foundation, представляющего интересы основных игроков Linux-рынка.

Структура Linux

Нередко под Linux понимают лишь его ядро, но имеется множество вещей, которыми ядро заниматься не должно. Работа с документами, посылка почты, обработка XML, отрисовка окон - для всего этого есть специальные библиотеки, входящие в состав практически всех дистрибутивов. Эти библиотеки, так или иначе, приводят к вызову ядра, но проблемы и ошибки могут возникать не только в ядре, но и в самих библиотеках.

Бытует мнение, что если программа перестала работать при смене дистрибутива Linux (или его версии), то, имея исходные коды, ее очень легко подправить, а потому и проблемы с совместимостью нет. Прежде чем обсуждать, так это или нет, рассмотрим сначала структуру ОС Linux.

«Обобщенная» модель системы на базе Linux представлена на

Рис. 1. Модель системы на базе ОС Linux

Каждая конкретная Linux-система создается для работы одного или нескольких приложений, однако кода самого приложения недостаточно, чтобы извлечь необходимый пользователям сервис из аппаратуры - большинство приложений использует в своей работе обращения к функциям библиотек. Стандарт LSB Core 3.1 определяет следующие системные библиотеки: libc, libcrypt, libdl, libm, libpthread, librt, libutil, libpam, libz, libncurses. В современных Linux-системах интерфейсы этих системных библиотек реализуются библиотеками glibc, Linux-PAM, zlib и ncurses, которые на самом деле реализуют больше интерфейсов, чем определено в LSB Core.

По степени взаимодействия с ядром Linux функции системных библиотек можно классифицировать так:

  • реализация функции полностью содержится в библиотеке, и ядро не используется (например, strcpy, tsearch);
  • в библиотеке реализуется тривиальная «обертка» (wrapper) для вызова соответствующего интерфейса ядра (например, read, write);
  • реализация функции содержит как вызовы системных интерфейсов ядра (причем возможно нескольких разных), так и часть кода в самой библиотеке (например, pthread_create, pthread_cancel).

Само ядро Linux содержит много экспортируемых точек входа, однако подавляющее большинство из них является внутренним интерфейсом для использования модулями и подсистемами самого ядра. Внешний интерфейс содержит порядка 250 функций (версия 2.6). Из них, к примеру, в своей реализации библиотека glibc 2.3.5 использует 137.

Конфигурации

Под конфигурацией системной части дистрибутива понимается комбинация версии ядра (включая отдельные заплаты), версий системных библиотек, параметров их сборки и архитектуры, на которой это все работает. На приведен пример конфигурации сборки двух гипотетических дистрибутивов, представляющих собой совокупность версий компонентов и заплат. Между версиями компонентов добавляется новая функциональность, а также убираются морально устаревшие интерфейсы и функции. Так, на данной диаграмме легко видеть, что поскольку дистрибутивы 1 и 2 используют различные версии GCC, совместимость по исходным кодам между ними отчасти утеряна - не все, что собиралось с помощью gcc 3.4, может быть собрано с помощью gcc 4.0 без доработки.

Рис. 2. Пример конфигурации сборки дистрибутивов

Дистрибутивы

По адресу lwn.net/Distributions/ можно найти перечень известных дистрибутивов Linux (на момент написания статьи их было 542), открытых для широкой публики. Здесь не учитываются версии, сделанные для внутреннего применения индивидуальными энтузиастами, а также различными компаниями, ведомствами и т.п. Согласно лицензии GNU, можно взять произвольный дистрибутив, внести в него модификации (как минимум в компоненты, подпадающие под GNU) и распространять далее.

Дистрибутивы можно классифицировать по ряду признаков.

  • По базовым производителям. К примеру, Red Hat, Slackware, SuSE, Debian, Asianux, Mandriva, Gentoo представляют собой основные «ветви» Linux-индустрии. Эти дистрибутивы не являются наследниками других (хотя между ними есть некоторые исторические зависимости). Их можно считать стратегическими направлениями развития в Linux вообще. Большинство остальных дистрибутивов явно принадлежат к одной из упомянутых ветвей, - в основном наследуя исходный код и приложения и добавляя специфическую функциональность.
  • По локализации. Во многих странах присутствует локальный производитель Linux (скажем, в России всем известны дистрибутивы ASP Linux и ALT Linux).
  • По применению. Дистрибутивы для встроенного применения в мобильных устройствах; дистрибутивы, работающие без поддержки файловой системы; облегченные версии для использования в КПК; переносные версии для запуска с ограниченных носителей (Linux на дискете, Linux на компакт-диске и т.п.).
  • По специализации. Дистрибутивы для поддержки определенной аппаратной архитектуры (AlphaLinux с поддержкой процессорной архитектуры Alpha, ARM Linux с поддержкой ARM и т.п.).

Процедура сборки Linux

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

Многообразие различных входящих в Linux компонентов и множество зависимостей между ними может проиллюстрировать процедура сборки ядра. Проект Linux From Scratch содержит последовательность шагов, необходимых для сборки дистрибутива Linux «с нуля». Упрощенная последовательность сборки дистрибутива LFS Linux версии 6.0 выглядит так:

1. Binutils-2.15.94.0.2.2 - Pass 1
2. GCC-3.4.3 - Pass 1
3. Linux-Libc-Headers-2.6.11.2
4. Glibc-2.3.4

87. Util-linux-2.12q
88. Конфигурация загрузки
89. Linux-2.6.11.12 - Ядро

Сборка ядра осуществляется на самом последнем шаге с помощью собранных перед этим бинарных утилит. Важно учитывать версии компонента, приведённого в каждом элементе списка. Замена одной версии компонента на другую не всегда тривиальна - сборка системы может оказаться невозможной из-за отсутствия или изменения какой-либо функции, либо усложнена. Сборка многих компонентов требует дополнительных действий, например, инструкция по сборке flex для данного дистрибутива содержит замечание :

Flex contains several known bugs. These can be fixed with the following patch:
patch -Np1 -i ../flex-2.5.31-debian_fixes-3.patch

В процесс сборки включается сборка средств компиляции, которые также претерпевают существенные изменения во времени. Даже базовые компоненты Linux нередко оказываются устаревшими. Так, версия компилятора gcc 4.0.0 не годится для сборки ядра 2.6.11 (хотя они и современники) и требует использования специальной заплаты для устранения этой несовместимости.

В плену зависимостей

Фрагментация на уровне библиотек - серьезнейшая проблема современного мира Linux. Частый выход новых версий библиотек Linux обычно считается хорошим явлением и, действительно, только так возможно быстро применять и апробировать новые идеи и делать доступными последние достижения «инженерной мысли»: в широком использовании иногда находятся десятки версий одной и той же библиотеки. При этом неотъемлемой отличительной чертой разработки отдельных компонентов ОС Linux является ее децентрализованный характер. Часто почти одновременно вышедшие новые версии различных компонентов заведомо несовместимы, а это означает, что совершенно невозможно обеспечить адекватное тестирование различных комбинаций библиотек на совместимость и гарантировать стабильную работу системы при всех возможных комбинациях. Как следствие, вся тяжесть проблем ложится на пользователя, решившегося установить программу или библиотеку, для которой явно не гарантируется способность работы в окружении, существующем на его машине, и такая ситуация складывается довольно часто.

Категория проблем, связанных с несовместимостью версий библиотек, получила название dependency hell («ад зависимостей», en.wikipedia.org/wiki/Dependency_hell ). С какими проблемами может столкнуться пользователь, установивший в свою версию ОС Linux какую-либо новую библиотеку? В этом случае приложения, работавшие с предшествующей версией, могут перестать корректно функционировать, так как эти приложения могли полагаться явно или неявно на определенные ошибки и побочные эффекты, присутствовавшие в старой версии. Также вполне реальна обратная ситуация, когда новая версия просто содержит новую ошибку. Но настоящая проблема возникает тогда, когда в системе должны работать несколько различных приложений, которые существенно полагаются на различные версии одной и той же библиотеки; может так оказаться, что совместная работа этих приложений просто невозможна. Иногда существует возможность иметь несколько версий одной и той же библиотеки в системе, и это будет вполне безопасным решением, однако это совершенно не рекомендуется делать в случае библиотеки glibc.

Основной эволюционный путь к достижению совместимости различных дистрибутивов Linux - стандартизация . Зрелый и всесторонне поддерживаемый стандарт позволит снизить затраты на обеспечение переносимости Linux-решений, что будет способствовать росту числа приложений для этой платформы, а значит и популярности Linux в целом. Сегодня в качестве такого «спасительного» стандарта выступает Linux Standard Base .

LSB - основной стандарт, определяющий требования совместимости к Linux-системам. Основные сведения по этому стандарту уже публиковались, например, в работе , в которой, однако, освещалась старая версия стандарта и несколько преувеличивалась роль интерфейсов ядра. В действительности стандарт LSB не специфицирует интерфейсы ядра, а определяет более высокоуровневые прикладные интерфейсы, реализуемые различными библиотеками. LSB не пытается быть заменой существующих стандартов, а наоборот, опирается на все основные стандарты, уже прижившиеся в Linux. Он фиксирует версии и подмножества составляющих стандартов, чтобы обеспечить согласованность, и дополняет описания тех интерфейсов, которые присутствуют де-факто в большинстве дистрибутивов Linux, но не вошли в какие-либо существующие стандарты. Основную часть стандарта LSB составляют требования к системным интерфейсам, которые должны поддерживаться всеми дистрибутивами Linux (своего рода «общий знаменатель» всех Linux-систем). В этой части LSB во многом ссылается на стандарт POSIX.

Основное отличие LSB в том, что разработчики приложений могут ориентироваться на одну платформу, скажем LSB 3.1, и этого достаточно для обеспечения работы на всех совместимых с LSB 3.1 дистрибутивах. То же самое действует и для поставщиков дистрибутивов: как только достигнуто соответствие с LSB 3.1, автоматически дистрибутив поддерживает все совместимые с ним приложения. К примеру, IBM в рамках инициативы Chiphopper предоставляет аппаратные решения под управлением только LSB-совместимых дистрибутивов. Во многом благодаря активности крупных игроков основные поставщики дистрибутивов уже прошли сертификацию по LSB или объявили о своих намерениях сертифицироваться (www.linux-foundation.org/en/LSB_Distribution_Status ).

Сейчас основной слабостью стандарта LSB является недостаток тестов. Встречаются случаи, когда описанный в стандарте интерфейс работает иначе, и тем не менее система успешно проходит сертификацию. Это объясняется тем, что теста на данный интерфейс просто нет, либо он слишком слаб, чтобы полноценно проверить работоспособность интерфейса. Очень уместно процитировать высказывание Яна Мердока, создателя Debian, а сегодня директора по технологиям Linux Foundation: «Известно, что интерфейсный стандарт хорош настолько, насколько хорошо тестовое покрытие, которое проверяет соответствие этому стандарту».

В Open Group открыли для включения в сертификационный набор тестов LSB некоторые из своих тестов для стандарта POSIX. В набор LSB включены свободные тесты стандартной библиотеки GNU C++ Runtime Library Test Suite, адаптированы тесты для libgtk и libxml. Консорциум Linux Foundation рассматривает возможность выкупа для открытия и включения в LSB различных платных тестовых наборов.

Занимаются решением этой задачи и в нашей стране. Так на базе Института системного программирования РАН создан Центр верификации ОС Linux, где разрабатывается открытый тестовый набор OLVER, который планируется включить в официальные тесты LSB. Между Центром и Linux Foundation заключено соглашение о сотрудничестве, в рамках которого продолжаются работы по улучшению тестового покрытия LSB и идет разработка новой инфраструктуры для развития этого стандарта.

Заключение

Для того чтобы предотвратить фрагментацию, уже имевшую место в отношении ОС Unix, необходимы меры обеспечения совместимости дистрибутивов - по крайней мере, в рамках некоторого подмножества функциональности. Переносимость приложений в рамках этого подмножества позволит объединить Linux как единую платформу и заметно понизить стоимость разработки и поддержки приложений, что должно положительно сказаться на их количестве и популярности Linux-решений в целом.

Сегодня основной инициативой по обеспечению переносимости является открытый стандарт LSB, принятый ведущими производителями дистрибутивов (Red Hat, SuSe, Mandriva) и приложений (MySQL, RealPlayer, SAP MaxDB). За этим стандартом стоит мощный консорциум Linux Foundation и такие его активные члены, как компании IBM, Intel, HP и Oracle, что позволяет надеяться на его успешное развитие и повсеместное внедрение в реальную жизнь. Таким образом, в лице стандарта LSB заложен надежный фундамент единой, нефрагментированной платформы Linux, обеспечивающей переносимость приложений как на основе исходного кода, так и в бинарном виде.

Однако даже очень хорошие стандарты остаются лишь благими пожеланиями, пока нет удобных и надежных способов проверять соответствие им. Именно поэтому улучшение качества покрытия тестов LSB является одним из важнейших приоритетов сотрудничества Центра верификации ОС Linux и Linux Foundation.

  • обнаружение неточностей и ошибок в тексте стандарта LSB и связанных с ним стандартов и сообщение о них оригинальным разработчикам для внесения изменений в будущие версии;
  • разработка формальных спецификаций на языке SeC (спецификационное расширение языка Cи), которые будут отражать требования стандарта LSB Core 3.1 для 1530 интерфейсных функций Linux;
  • разработка открытых тестовых наборов для функционального тестирования различных Linux-систем на соответствие требованиям стандарта LSB Core 3.1 (проверяется поведение системных интерфейсов прикладного программирования Linux).
  • Тестовый набор основан на автоматической генерации тестов из формальных спецификаций требований и соответствующих тестовых сценариев с применением технологии UniTESK.

    К концу 2006 года основная фаза проекта была завершена; все результаты проекта опубликованы на сайте Центра. Сейчас проект находится в стадии поддержки и расширения спектра целевых платформ (комбинации аппаратной архитектуры с конкретным дистрибутивом).

    * Flex содержит несколько известных ошибок. Они могут быть исправлены при помощи следующей заплаты…- англ.


    Проблемы совместимости Linux-систем


    Совместимость старых программ с Windows 7

    Решение проблем совместимости программ

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

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

    При устранении проблемы совместимости Помощник по совместимости программ пытается решить конфликт с системой безопасности (в Windows 7 она была значительно усовершенствована) или же запускает режим моделирования одной из предыдущих версий Windows, в которой приложение работает корректно.

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

    Активизация Помощника по совместимости

    Активизация Помощника по совместимости программ происходит только автоматически при обнаружении проблемы. Однако для некорректно работающего приложения вы можете изменить параметры совместимости вручную. Для этого выполните команду Пуск Панель управления Система и безопасность, в разделе Центр поддержки щелкните на ссылке Устранить типичные проблемы компьютера, а затем - на Выполнение программ, предназначенных для предыдущих версий. То же самое можно сделать, введя в поле поиска меню Пускслово совместимость и щелкнув на нужной ссылке.

    Следуя инструкциям мастера, укажите проблемную программу и то, каким способом следует провести ее диагностику.

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

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

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

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

    Как правило, приложения и аппаратное обеспечение, работающее на Windows Vista, продолжит работать и на Windows 7. В следующем примере показано несколько проблемных областей совместимости приложений Windows 7.

    1. Запуск и установка приложения : во время запуска и установки приложения помешать установке должным образом могут две распространенные проблемы:

    Приложения пытаются копировать файлы и ярлыки для папок, которые были правомочны для предыдущей операционной системы Windows, но не существуют в новой операционной системе.

    Приложения пытаются сослаться на компоненты Windows, которые в Windows 7 были переименованы.

    2. Контроль пользовательской учетной записи (UAC) : UAC увеличивает безопасность Windows, ограничивая доступ к компьютеру без уровня администратора, что ограничивает запуск приложений большинству пользователей, в качестве обычных пользователей. Также UAC ограничивает контекст, в котором выполняется процесс, чтобы свести к минимуму возможность пользователей непреднамеренно подвергнуть свой компьютер заражению вирусами или другими вредоносными программами.

    UAC может иметь следующие проблемы совместимости:

    Некоторые установщики, деинсталляторы и обновление не будет работать без повышения статуса до администраторского.

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

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

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

    DLL библиотеки приложений, которые запускаются с помощью RunDLL32.exe, если они выполняют глобальные операции, могут работать неправильно.

    Запись стандартным пользователем приложений в глобальное расположение будет перенаправлено для каждого пользователя с помощью виртуализации.

    3. Windows Resource Protection (WRP) : WRP предназначен для защиты ресурсов Windows (файлов, папок, реестра) в режиме только для чтения. Установщики приложений пытавшиеся заменить, изменить или удалить находящиеся под защитой WRP файлы операционной системы и/или ключи реестра могут вызвать сбой с сообщением об ошибке, указывающем на невозможность обновления ресурса.

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

    Приложения, использующие Internet Explorer и пытающиеся сделать запись непосредственно на диск во время нахождения в Интернете или интрасети, могут вызвать сбой.

    5. 64-битная архитектура : Windows 7 полностью поддерживает 64-битную архитектуру. Приложения или компоненты, использующие 16-битные исполняемые файлы, 16-битные установщики или 32-битные драйвера ядра, могут вызвать сбой при запуске или будут неправильно функционировать.

    6. Windows Filtering Platform (WFP) : WFP интерфейс прикладного программирования (API), позволяющий разработчикам создавать код, взаимодействующий с фильтрацией, происходящей на нескольких уровнях сетевого режима и во всей операционной системе. Если вы в своей системе пользуетесь предыдущей версией API, у вас могут возникнуть сбои при работе приложений связанных с безопасностью, таких как сканеры сети, антивирусные программы или фаерволы.

    7. Изменение версии операционной системы : номер версии операционной системы изменяется с каждым новым релизом. Для Windows Vista внутренний номер версии - 6, в то время как у Windows 7 внутренний номер версии - 6.1.

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

    8. Драйвера ядра: драйвера ядра должны поддерживать операционную систему Windows 7 или быть обновлены с помощью User-Mode Driver Framework (UMDF). UMDF - это платформа усовершенствования драйверов устройств, которая была введена в Windows Vista.

    9. Устаревшие компоненты : релиз Windows 7 также поднял вопросы к устаревшим API или библиотекам DLL из Windows XP и Windows Vista, новым фреймворком и изоляцией служб. Это становиться причиной для приложений, использующих устаревшие API-интерфейсы или библиотеки DLL, использующих старые учетные данные или не поддерживающих изоляции служб терять функциональность или не запускаться.