15 лет назад 8 февраля 2004 в 16:12 109

Одной из главных проблем, с которой сталкиваются пользователи Windows XP, является совместимость программного обеспечения. При проектировании новой операционной системы разработчики всегда стараются сделать ее лучше предыдущей. Но качественные изменения часто приводят к неузнаваемости отдельных компонентов – “рычагов”, на которые опирается работа программ. Особенно обидно, когда в самой современной ОС отказывается работать любимая игра.

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

Существует четыре принципиально разных механизма запуска проблемных приложений или игр в операционной системе Windows XP.

Мультизагрузочная конфигурация
Самый эффективный и в то же время самый неудобный – это использование менеджера загрузки (boot manager). Лучший и нередко, к сожалению, единственный способ запустить игру, предназначенную только для Windows 98, – это… запустить ее из Windows 98.

Наиболее сложный (но широко распространенный) случай создания мультизагрузочной конфигурации – установка Windows 98 после Windows XP при наличии только одного жесткого диска, полностью распределенного под системный раздел с использованием файловой системы NTFS (именно такую конфигурацию, как правило, и имеют новые ПК).
Само собой напрашивается простейшее решение – полностью разбить заново и переформатировать диск. Однако такая возможность представляется далеко не всегда. Наиболее адекватным в данной ситуации является сжатие (Resize) раздела NTFS и создание на освободившемся месте нового, формата FAT32.

При создании раздела следует обратить внимание на следующие нюансы.
– Старые системы, такие как MS-DOS 6.22, не могут работать с разделами, находящимися за пределами восьмого гигабайта жесткого диска. Поэтому во время сжатия свободное место рекомендуется выделять в начале, а не в конце винчестера. Добиться этого проще всего, используя программу Acronis Partition Expert (www.acronis.com).

– Создание нового раздела в начале диска изменит порядковый номер раздела NTFS, что в свою очередь приведет систему в незагружаемое состояние. Самый простой способ предотвратить это – предварительно внести изменения в файл boot.ini, а именно дублировать строку загружающей Windows XP с изменением номера загружаемого раздела. Например:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Microsoft Windows XP Professional” /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS=”Microsoft Windows XP Professional MOVED” /fastdetect.
При этом буква раздела у NTFS-тома сохранится прежняя, то есть С:.

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

– На жестком диске должен присутствовать файл, содержащий в себе загрузочный сектор Windows 98. В идеале файл BOOTSECT.DOS должен создаваться автоматически (при установке Windows XP на ПК с уже установленной Windows 98). Но так как мы устанавливаем Windows 98 после Windows XP, придется найти его в интернете (для вашей версии Windows 9x) или создать самим.

– В файле boot.ini должна быть строка, указывающая на этот файл. Например: C:\BOOTSECT.DOS=”Microsoft Windows 98″ (подробнее про boot.ini можно узнать из статьи stn-vidnoye.narod.ru/html/articles/faq_boot_ini.htm).

– В активном разделе должен быть установлен загрузчик Windows XP. Если вы хотите избежать копирования менеджера загрузки XP и файлов boot.ini, ntldr и NTDETECT.COM на FAT-раздел, задайте в качестве активного раздела NTFS-том. Делать это следует после создания файла BOOTSECT.DOS, который затем надо скопировать на NTFS-раздел.

Создание BOOTSECT.DOS

В конференциях часто раздаются жалобные стоны страждущих “Нет ли у кого BOOTSECT.DOS?”. Мы хотим обратить ваше внимание на тот факт, что содержимое этого файла не является унифицированным, оно зависит от используемой OS и состояния таблицы разделов. Поэтому, если вы хотите получить гарантированно рабочий BOOTSECT.DOS, придется создать его самостоятельно. Кроме того, мы советуем вам быть очень осторожными с популярной программой Bootpart (yusoft.kulichki.com/russian/soft/bootpart_r.htm), так как нередки случаи, когда при ее использовании система отказывается загружаться.

Рекомендуемый способ создания файла BOOTSECT.DOS заключается в сохранении создающегося непосредственно после установки Windows 98 Boot Record при помощи программы Debug – интерпретатора ассемблер-комманд. Для этого следует запустить его, указав в качестве вводных данных (DEBUG.EXE
L 100 2 0 1
N C:\BOOTSECT.DOS
R BX
0
R CX
200
W
Q

Данный способ, хоть и не блещет удобством, является самым надежным. Стоит отметить, что мы предполагаем использование стандартного менеджера загрузки Windows XP, так как его не нужно “доставать” и устанавливать. Если же вы хотите установить достойную альтернативу, обладающую более широкими возможностями, вам стоит заглянуть на страницу arozovu.pisem.net/grub.html. Подробно ознакомится с теоретической частью данного вопроса можно по адресу arozovu.pisem.net/teor.html

Виртуальная DOS-машина Windows XP

Неплохой метод запуска старых добрых DOS-игрушек заключается в использовании стандартной NTVDM (NT Virtual DOS Machine). Данный инструмент интегрирован в Windows и позволяет без дополнительных усилий запускать DOS-приложения непосредственно из системы. При этом в виртуальной DOS-машине ваша звуковая карта представлена как Creative Labs Sound Blaster, хотя ее эмуляция не безупречна.

Помимо DOS-эмуляции NTVDM позволяет изменять конфигурацию виртуальной DOS машины, в основном – виртуальные файлы config.sys и autoexec.bat. Конфигурация DOS-программы в Windows XP хранится в файле с именем, аналогичным имени программы, но с расширением pif. А конфигурация виртуальных файлов autoexec.bat и config.sys автоматически генерируется на основе настроек этого pif-файла и содержимого файлов %SystemRoot%\SYSTEM32\AUTOEXEC.NT и %SystemRoot%\SYSTEM32\CONFIG.NT (их можно задать явно в свойствах pif-файла: Properties > Program > Advanced). Основная конфигурация, используемая для программ, не имеющих такого персонального pif-файла, хранится в файле %SystemRoot%\_default.pif.

Серьезным недостатком данного инструмента является невозможность прямого доступа к устройствам, и нередко – аварийное завершение программ при попытке его организовать.

Эмуляторы ПК
Третьим, наиболее экзотичным методом является использование эмуляторов персонального компьютера WMware (www.vmware.com) и VirtualPC (www.microsoft.com/virtualpc) для запуска важных DOS-приложений или игр, с которыми вы до сих пор не готовы расстаться.

Нельзя не упомянуть тот факт, что иногда эти эмуляторы “слетают”, а также не способны обеспечить полноценный доступ к физическому диску, содержащему основную систему (хотя VMware и позволяет осуществлять запись на такой диск, последствия подобных операций могут быть непредсказуемы). Однако по сравнению с преимуществами эти недостатки несущественны. В отличие от NTVDM данные эмуляторы обладают полной программной совместимостью – запуская DOS, вы получаете именно DOS, со всеми ее (программными!) возможностями без исключения.

Вам не надо перезагружаться, как в случае с менеджером загрузки. Вы забываете о большинстве проблем, возникающих при использовании драйвера EMM386.exe (подробно с этими проблемами и методами их решения можно ознакомиться по адресу citforum.tomsk.ru/hardware/memory/mem_0733.shtml).

Кроме того, VirtualPC позволяет решать проблемы аппаратной совместимости и другого характера – многие DOS-игры в своей работе опираются на видеодрайвер UniVBE и программу Sound Configuration Utility (setsound), которые давно не обновляются и не поддерживают большинство используемых сегодня видео- и звуковых карт.

В отличие от VMware, где как видеокарта эмулируется некий VMware Video Adapter, а звуковая карта вообще не функционирует, VirtualPC в качестве видеокарты эмулирует известный адаптер S3 Trio 32/64 PCI, а в качестве звуковой карты – популярный в свое время Creative Labs SoundBlaster 16. Последнее – единственный способ насладиться музыкой в бессмертных Mortal Kombat 1 и 2 для владельцев материнских плат Intel с интегрированной звуковой картой AC’97 (часть владельцев аналогичных карт от VIA может воспользоваться DOS-драйвером, который не трудно найти в интернете).

Режим совместимости Windows XP
И, наконец, четвертым способом решения проблемы совместимости, весьма привлекательным с точки зрения комфортности, но имеющим весьма узкую область применения, является использование Microsoft Windows Application Compatibility Toolkit.
Первое, что мы слышим в ответ на наши жалобы по поводу неработоспособности той или иной игры, – “попробуй режим совместимости с Windows 98”. Разрабатывая Windows XP, Microsoft планировала объединить две ветви ОС Windows, взяв лучшее от каждой из них. Тремя приоритетными задачами были увеличение скорости загрузки по сравнению с Windows NT/2000, увеличение стабильности по сравнению с Windows 95/98 и возможность запуска приложений, предназначенных для любой из вышеперечисленных систем. Для обеспечения такой возможности и был создан инструмент, называемый Compatibility.

Данный инструмент позволяет программам запускаться в виртуальном режиме, в котором XP задействует ряд имеющихся у нее механизмов адаптации (в дальнейшем – маскировки). Механизмов этих очень много, поэтому, чтобы облегчить существование простому пользователю, они были объединены в группы, соответствующие названиям операционных систем. Однако группы эти не универсальны, и для приложений, нуждающихся в более тонкой настройке, был разработан механизм создания и применения индивидуальных “заплаток”. Пакет Microsoft Windows Application Compatibility Toolkit предназначен именно для осуществления доступа к этому механизму.

Версия 2.0 данного пакета присутствует на компакт-диске с дистрибутивом Windows XP (\SUPPORT\TOOLS\ACT20.EXE). Последнюю же версию (3.0) можно скачать с сайта корпорации Microsoft (www.microsoft.com/windows/appcompatibility/default.mspx). Работу с ней мы рассмотрим подробнее.

В состав пакета входят три программы: Microsoft Application Compatibility Analyzer 1.0, Windows Application Verifier 2.50 и Compatibility Administrator Tool 3.0.
Первая предназначена для инвентаризации имеющегося на компьютере (в сети) программного обеспечения. В непосредственном решении связанных с совместимостью проблем она не участвует.

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

После завершения работы приложения (выдаче сообщения об ошибке) следует нажать кнопку View Logs и ознакомиться с возникшими ошибками и комментариями относительно методов их решения.

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

Рассмотрим использование Compatibility Administrator Tool 3.0 на примере любимой многими игры Mortal Kombat Trilogy for Windows.
Игра запускается нормально, но сразу после выбора персонажа завершает выполнение с выводом следующей ошибки:

Попытка запустить игру в режиме совместимости Windows 98/Windows Me приводит к еще более удручающим результатам – не успев запуститься, игра “вываливается” с такими сообщениями:

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

Запустим Compatibility Administrator Tool 3.0. Первым делом посетим раздел System Database > Applications и проверим наличие искомой программы в списке готовых заплаток, поставляемых Microsoft вместе с пакетом. Если она там присутствует, то ее достаточно скопировать из System Database в Custom Database. К сожалению, Mortal Kombat в списке отсутствует, поэтому заплатку нам придется изготовить самостоятельно. Выполняем Right Click на New Database и выбираем Create New > Application Fix или просто нажимаем кнопку Fix на контрольной панели.

В следующем окне указываем название программы, имя производителя и исполняемый файл:

Далее указываем якобы используемую операционную систему и по желанию включаем один из установленных (их, как и заплатки, можно создавать самостоятельно) режимов совместимости – на основе этого выбора программа автоматически включит соответствующие опции. Стоит выбрать режим, который легче поддается диагностике. Для Mortal Kombat Trilogy это Windows 98 – в режиме None для тестирования дееспособности настроек нам пришлось бы пробираться через меню.

В следующем окне нам предоставляется возможность выбрать, какие из 221 механизма маскировки должны быть задействованы.
Выбор нужных опций – самая сложная часть всего этого процесса. В осознанном выборе могут помочь данные, полученные при помощи Windows Application Verifier, но часто в этом помогает и элементарный здравый смысл. Например, для запуска игры Tie Fighter 95, для функционирования которой необходим джойстик, достаточно выключить опцию EmulateJoystick, а для Mortal Kombat Trilogy достаточно отключить опцию Win98VersionLie.

Если бы мы подходили с противоположной стороны (выбрав режим None), то для работоспособности этой игры достаточно было бы включить опцию IgnoreException. Вообще, в той ситуации, когда вы не понимаете, почему возникла данная ошибка или какие опции ей соответствуют, в первую очередь следует проверять опции, начинающиеся на слово Ignore (их там 18). Но даже если дело не в них, найти опцию, отвечающую за ошибку (если она одна), можно элементарным перебором максимум за 16 шагов. Для этого следует переключить половину опций и проверить работоспособность приложения (Test Run). Если сообщение об ошибке изменилось или исчезло – искомая опция находится среди переключенных, в противном случае – среди остальных. Далее операция повторяется, но уже среди выбранных опций.

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

После нажатия кнопки Finish следует сохранить созданную базу данных (Save) и установить ее в систему (Custom Databases > Имя базы данных > Right Click > Install). При необходимости аналогичным образом можно удалить базу данных из системы (Installed Databases > Имя базы данных > Right Click > Uninstall). Для проведения дополнительных исследований это необходимо, так как установленные в действующей заплатке механизмы маскировки не отключаются при непосредственном редактировании заплатки.

Теперь, имея на руках файл с заплаткой, вы можете установить его на любом компьютере двойным щелчком или, в системах, на которых данный тип файлов не проассоциирован (например, Windows 2003 Server), программой sdbinst.exe, входящей в стандартную поставку Windows XP (скажем, sdbinst.exe mkt.sdb). После этого можно, ни о чем не заботясь, запускать игру.

Server vs Workstation

Ни для кого не секрет, что фундамент, на котором Microsoft строит различные версии (Workstation, Server, Advanced Server) своей операционной системы, всегда остается неизменным. Однако некоторые приложения, такие как Kaspersky Anti-Virus или Partition Magic, запускаются только на той версии системы, для которой они предназначены.

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

Система Windows 2003 Server не является исключением и фактически представляет собой улучшенную и дополненную Windows XP. Однако часто при использовании в ней программы TweakNT в момент входа в систему выдается сообщение об ошибке.

Избавиться от этого можно, если заменить файлы oembios.bin oembios.dat oembios.sig в папке %SystemRoot%\SYSTEM32\ на такие же файлы из Windows XP.