Немаловажным
условием комфортной работы пользователей в новой операционной системе
Windows Vista является возможность запуска программ, написанных для
предыдущих версий операционных систем семейства Windows.
Действительно, нет ничего хуже, чем ошибка при попытке установки или
запуска жизненно необходимой вам программы, которая раньше отлично
работала на предыдущих версиях Windows. Иногда такая ошибка может
поставить последнюю точку в вопросе выбора операционной системы, в
которой будет работать пользователь. И, конечно, не в пользу новой
операционной системы Windows Vista.
Однако если вы все-таки столкнулись с ситуацией, когда какая-то
программа не хочет работать в новой операционной системе, не стоит сразу
отчаиваться. Операционная система Windows Vista, как и предыдущие
версии операционной системы Windows, содержит в своей стандартной
поставке компонент, с помощью которого можно для конкретной программы
эмулировать условия запуска под операционной системой Windows любой
версии, более старой, чем Windows Vista.
Для этого можно воспользоваться как минимум двумя способами.
Первым и самым быстрым способом является использование вкладки
COMPATIBILITY диалога PROPERTIES. Данная вкладка есть во всех диалогах
PROPERTIES, принадлежащих исполняемым файлам или ярлыкам на них.
Вкладка COMPATIBILITY содержит в себе следующие функциональные области.
* Compatibility mode. Именно с помощью флажка данной
области можно активировать режим совместимости для конкретной программы.
После этого в выпадающем списке нужно выбрать операционную систему,
которую будет эмулировать операционная система Windows Vista. Можно
выбрать такие операционные системы, как Windows 95, Windows 98, Windows
NT 4.0, Windows 2000, Windows XP SP2 и Windows 2003 Server.
* Settings. Позволяет указать дополнительные опции
запуска программы в совместимом режиме. К ним относятся возможность
запуска программы с использованием разрешения экрана 640×480, запуск в
256 цветном режиме, запуск с отключенными визуальными темами, или с
отключенными настройками DPI.
* Privilege Level. С помощью флажка данной области
можно указать, что программа для данного пользователя должна запускаться
с правами администратора.
* Кнопка Show settings for all users. Позволяет
отобразить вкладку COMPATIBILITY, с помощью которой можно настроить
параметры запуска программы в режиме совместимости для всех
пользователей, а не только для одного.
Вторым же способом запуска программы в режиме совместимости является
использование мастера PROGRAM COMPATIBILITY WIZARD. Чтобы запустить
данный мастер, нужно воспользоваться программой HELP AND SUPPORT CENTER,
доступ к которой можно получить либо при помощи меню START, либо с
помощью нажатия клавиши F1. Проще всего после запуска программы HELP AND
SUPPORT CENTER в ее строке поиска ввести Compatibility Wizard.
Результатом поиска будет ссылка START THE PROGRAM COMPATIBILITY WIZARD,
после нажатия на которую будет запущен мастер совместимости программ.
Особенностью данного мастера является то, что с его помощью можно
настроить запуск в режиме совместимости не только программ,
расположенных на жестком диске, но и программ, расположенных на CD или
DVD-диске. Для этого нужно выбрать соответствующее положение
переключателя HOW DO YOU WANT TO LOCATE THE PROGRAM THAT YOU WOULD LIKE
TO RUN WITH COMPATIBILITY SETTINGS?.
* I want to choose from a list of programs.
Позволяет выбрать программу из списка программ, найденных на жестком
диске. Поиск программ выполняется при каждом запуске мастера
совместимости и может занять продолжительное время.
* I want to use program in the CD-ROM drive.
Позволяет выбрать программы, расположенные на CD или DVD-диске. После
установки данного переключателя мастер попросит вас вставить диск в
привод (если он еще не вставлен), а после этого вы перейдете к шагу
выбора параметров совместимости мастера.
* I want to locate the program manually. Позволяет ввести путь к программе вручную.
После того, как вы выберите программу, которую нужно запустить в
режиме совместимости, мастер попросит вас указать все те настройки,
которые мы рассматривали при описании вкладки COMPATIBILITY. Сначала
будет предложено выбрать операционную систему, которую нужно
эмулировать, потом дополнительные настройки совместимости, а потом
определить, будет ли программа запускаться с правами администратора. А
после этого будет выполнена попытка запуска программы, однако окно
мастера закрыто не будет. Последним шагом мастера будет ответ на
вопросы, работает ли программа корректно и хотите ли вы отослать
сведения о работе программы в совместимом режиме корпорации Microsoft.
Хранение сведений о запуске программы в совместимом режиме в реестре
Но как же операционная система определяет, какую программу нужно
запускать в совместимом режиме, а какую в обычном? Как это часто бывает,
для этого используются сведения, хранящиеся в реестре. Сведения обо
всех программах, запускаемых в совместимом режиме, хранятся в параметрах
строкового типа (каждый параметр описывает сведения о запуске одной
программы) ветви реестра HKCU\Software\Microsoft\Windows
NT\CurrentVersion\AppCompatFlags\Layers (или ветви корневого раздела
HKEY_LOCAL_MACHINE, в этом случает программы запускаются в совместимом
режиме для всех пользователей). Название параметра данной ветви реестра
соответствует пути к программе и ее названию. Значение же параметра
состоит из слов, разделенных между собой пробелами. Первое слово
определяет операционную систему, которую нужно эмулировать
(соответственно, WIN95, WIN98, NT4SP5, WIN2000, WINXPSP2 или
WINSRV03SP1), а остальные — дополнительные параметры запуска в
совместимом режиме (соответственно, слова 256COLOR, 640X480,
DISABLETHEMES, DISABLEDWM и HIGHDPIAWARE).
Также в реестре содержатся сведения о программах, которые не могут
работать в новой операционной системе. Если вы попытаетесь установить
такую программу, тогда отобразиться диалог, сообщающий о том, что данная
версия программы не совместима с операционной системой Windows Vista.
Данный диалог запускается при помощи программы pcaui.exe, ссылка на
которую содержится в параметре REG_EXPAND_SZ типа ApphelpUIExe,
расположенном в ветви реестра HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\AppCompatFlags.
Групповые политики
Механизм совместимости программ, реализованный в операционной системе
Windows Vista, как и многие другие компоненты данной операционной
системы, можно настроить с помощью групповых политик. Для этого
применяется подраздел групповых политик COMPUTER
CONFIGURATION/ADMINISTRATIVE TEMPLATES/WINDOWS COMPONENTS/APPLICATION
COMPATIBILITY. Все политики данного подраздела изменяют параметры,
расположенные в ветви реестра
HKLM\Software\Policies\Microsoft\Windows\AppCompat, и имеющие тип
REG_DWORD.
* VDMDisallowed. Если значение данного параметра
равно 1, тогда запуск 16-разрядных программ подсистемы MS-DOS (файл
ntvdm.exe) будет запрещен. Также данный параметр доступен в корневом
разделе HKCU.
* DisablePropPage. Если значение данного параметра
равно 1, тогда вкладка СОВМЕСТИМОСТЬ диалога СВОЙСТВА исполняемых файлов
и ярлыков на них отображаться не будет.
* DisableEngine. Если значение данного параметра
равно 1, тогда механизм проверки несовместимых с Windows Vista
приложений (при запуске приложений) использоваться не будет.
* DisableWizard. Если значение данного параметра
равно 1, тогда отображение мастера совместимости программ будет
запрещено.
* DisablePCA. Если значение данного параметра равно
1, тогда помощник по совместимости программ будет отключен. Данный
помощник следит за запускаемыми программами и, в случае обнаружения
неполадок, извещает о них пользователя. Также данный параметр доступен в
корневом разделе HKCU.
Ассистент Program Compatibility Assistant работает только в том случае, если служба Diagnostic Policy Service запущена.
Информация об обнаруженных ассистентом Program Compatibility Assistant
несовместимых с операционной системой Windows Vista программах заносится
в журнал подраздела Applications and Services
Logs/Microsoft/Windows/Program-Compatibility-Assistant.
Также групповые политики операционной системы Windows Vista содержат в
себе отдельные политики для настройки поведения ассистента PROGRAM
COMPATIBILITY ASSISTANT. Они находятся в подразделе групповых политик
Computer Configuration/Administrative Templates/System/Troubleshooting
and Diagnostics/Application Compatibility Diagnostics. Все политики
данного подраздела изменяют параметры, расположенные в подразделах ветви
HKLM\SOFTWARE\Policies\Microsoft\Windows\WDI, и имеющие тип REG_DWORD.
Notify blocked drivers Данная политика определяет, будет ли ассистент, в
случае обнаружения невозможности установки драйвера, отображать
уведомление с предложением найти корректный драйвер на сайте Microsoft.
Если данная политика запрещена, тогда уведомление с предложением поиска
другого драйвера отображаться не будет.
Запрещение данной политики присваивает параметру
EnabledScenarioExecutionLevel, расположенному в подразделе
{affc81e2-612a-4f70-6fb2-916ff5c7e3f8}, значение 1. Также создается
параметр ScenarioExecutionEnabled, значение которого равно 1.
Detect application failures caused by deprecated Windows DLLs or COM
objects Данная политика определяет, будет ли ассистент следить за
установкой приложений и запуском ими устаревших DLL или COM-объектов.
Если данная политика включена, тогда ассистент, при обнаружении попытки
обращения к устаревшим объектам, из-за которого и происходит сбой
установки, отображает диалог с отображением сведений об устаревшем
объекте и предложением посетить сайт Microsoft для поиска решений
возникшей проблемы.
Установка данной политики присваивает параметру
EnabledScenarioExecutionLevel, расположенному в подразделе
{659F08FB-2FAB-42a7-BD4F-566CFA528769}, значение 1 или 2. Значение 1
устанавливается, если в выпадающем списке политики выбрать элемент
DETECTION AND TROUBLESHOOTING ONLY. Значение 2 присваивается при выборе
элемента DETECTION, TROUBLESHOOTING AND RESOLUTION.
Также создается параметр ScenarioExecutionEnabled, значение которого равно 1.
Detect application install failures Данная политика определяет, будет ли
ассистент, перед началом установки приложения, проверять его
совместимость с операционной системой Windows Vista при помощи
эвристики. Если после проверки ассистент предполагает, что приложение не
сможет инсталлироваться, тогда он запускает установку приложения в
режиме совместимости с Windows XP. Чтобы запретить ассистенту выполнение
проверки методом эвристики, нужно запретить использование этой
политики.
Запрещение данной политики присваивает параметру
EnabledScenarioExecutionLevel, расположенному в подразделе
{acfd1ca6-18b6-4ccf-9c07-580cdb6eded4}, значение 1. Также создается
параметр ScenarioExecutionEnabled, значение которого равно 1.
Detect application installers that need to be run as administrator
Данная политика определяет, будет ли ассистент, перед началом установки
приложения, проверять, необходимы ли при установке приложения права
администратора.
Установка данной политики присваивает параметру
EnabledScenarioExecutionLevel, расположенному в подразделе
{D113E4AA-2D07-41b1-8D9B-C065194A791D}, значение 1 или 2. Значение 1
устанавливается, если в выпадающем списке политики выбрать элемент
DETECTION AND TROUBLESHOOTING ONLY. Значение 2 присваивается при выборе
элемента DETECTION, TROUBLESHOOTING AND RESOLUTION.
Также создается параметр ScenarioExecutionEnabled, значение которого равно 1.
Detect applications unable to launch installers under UAC Данная
политика определяет, будет ли ассистент, перед началом установки
приложения, проверять, может ли выполняться установка приложения при
работе механизма UAC.
Установка данной политики присваивает параметру
EnabledScenarioExecutionLevel, расположенному в подразделе
{081D3213-48AA-4533-9284-D98F01BDC8E6}, значение 1 или 2. Значение 1
устанавливается, если в выпадающем списке политики выбрать элемент
DETECTION AND TROUBLESHOOTING ONLY. Значение 2 присваивается при выборе
элемента DETECTION, TROUBLESHOOTING AND RESOLUTION.
Также создается параметр ScenarioExecutionEnabled, значение которого равно 1.