Версии

Что в имени?
То, что зовем мы Windows,
И под другим названьем сохраняло б
Свой номер версии...
   Неизвестный пользователь


    Все уже давно привыкли, что каждый программный продукт имеет номер версии, и этот номер есть нечто постоянное, как гранитная скала. Невозможно представить, чтобы какая-либо программа, установленная на компьютере, сначала сообщала, что номер ее версии - 6.0, через пять минут - 7.0, а еще через пять - 6.2.
    Тем не менее, это не настолько нереальная ситуация, как кажется. Первые шаги в этом направлении были сделаны включением в состав ДОС утилиты SETVER, которая, будучи загруженной, "обманывает" некоторые программы, сообщая им, в ответ на их запрос, номер версии ДОС, требующейся для их работы, а не установленной на компьютере на самом деле.
    С появлением Windows 95, а теперь и Windows 98, ситуация заметно усложнилась. Теперь при загрузке вы видите сообщение "Starting Windows 95" ("Загружается Windows 95"), даже если вы загружаете систему только до командной строки (по старой терминологии - только ДОС), а ДОС уже как бы и вовсе не существует. Windows 98 по умолчанию вообще не выводит подобных сообщений. В ответ на команду VER вы получите сообщение вида "Windows 95. [Версия 4.00.950]", означающее, что на вашем компьютере установлена Windows 95 версии 4.0 вариант (build) 950. Если у вас установлена Windows 95 OSR2, то сообщение будет иметь вид "Windows 95. [Версия 4.00.1111]", а если Windows 98 - то "Windows 98. [Версия 4.10.1998]"
    Теперь проведем небольшой эксперимент. Для него потребуются: программа MSD.EXE версии до 2.10 включительно или версии  2.11 1994 года (из состава Windows 3.11), а также та же программа с диска Windows 95 или 98 версий 2.11 (1995 года) или 2.14 соответственно. В дальнейшем будем называть их старая MSD и новая MSD. Еще понадобятся программы MSINFO и MSINFO32. Первая из них входила в состав Word 6 и Excel 5, вторая - в следующие версии программ семейства MS OFFICE.
    Из командной строки (не из сеанса ДОС из-под Windows) запустите старую программу MSD. Эта программа сообщит, что на компьютере установлены MS-DOS версии 7.0 (для OSR2 и Windows 98 - 7.1) и Windows версии 4.0 (или 4.1), неактивная. Новая программа MSD вопрос о версии ДОС обойдет стороной (раздела с информацией о ДОС в ней просто нет), а о Windows выдаст такую же информацию, как и старая программа.
    С ДОС недоразумения ограничиваются только этим. Все программы, которые не "знают", что в состав Windows 95/98 ДОС 7.0 (7.1) не входит, то есть написанные так, чтобы не игнорировать информацию о ДОС, в один голос сообщают о наличии ДОС 7.0 или 7.1. Кстати, в файле COMMAND.COM от Windows 95 и 98 имеется следующая весьма любопытная строка: "MS-DOS Version 7 (C) Copyright 1981-1995" - "МС-ДОС версия 7, авторские права 1981-1995 гг."
    С номером версии собственно Windows путаницы несколько больше. Программа MSINFO32 сообщает, что на компьютере установлена только Windows версии 4.00 (или 4.10), а более ранняя версия той же программы обнаруживает MS-DOS 7.0 и Windows версии... 3.95. 
    Теперь запустите старую программу MSD в окне ДОС. Она обнаружит работающую в расширенном режиме версию Windows, какую бы вы думали? 3.00 для Windows 95 и 3.10 для Windows 98. Новая версия MSD сообщит, соответственно, о Windows версий 4.00 и 4.10. Если вы еще не запутались в разнообразии версий одного и того же продукта, установите в свойствах программы MSD (любой) флажок "Не давать программе обнаружить Windows", и снова запустите эту программу в окне ДОС. MSD все же обнаружит Windows, но какую! Windows/286 2.x!!!
    Почему же так получается? Начнем с ДОС. Исходя из маркетинговых соображений, корпорация "Майкрософт" при выходе Windows 95 объявила, что это совершенно новая операционная система, не нуждающаяся в ДОС (в документации сказано более осторожно: "не нуждается в отдельной версии ДОС") . Тем не менее, в состав Windows 95 входит ДОС 7.0 (начиная с Win95 OSR2 - 7.1), и загрузка системы начинается именно с загрузки ДОС. Более того, можно загрузить только ДОС, если выбрать из меню загрузки пункт "Command prompt only". Правда, "Майкрософт" и тут постаралась скрыть от глаз публики наличие ДОС, объявив это режимом загрузки "без графического интерфейса пользователя" (GUI), пойдя на искажение понятий. (Отвлекаясь от темы данной статьи, скажу, что загрузка Windows 95/98 без графического интерфейса действительно возможна, если принять специальные меры: удалить файлы, обеспечивающие этот интерфейс. При этом вы получите 32-разрядную среду, использующую виртуальную память, длинные имена файлов и с другими чертами, характерными для Windows, но имеющую только текстовый интерфейс. Не спрашивайте меня, как это сделать, поскольку для получения реально работоспособной системы, похоже, придется дописать пару-тройку VxD. За дополнительной информацией обращайтесь к книге Э.Шульмана "Неофициальная Windows 95", Киев, 1995 год).
    "Но ведь в ответ на команду VER система сообщает о наличии Windows, а не ДОС", - возможно, скажете вы. Давайте запустим старую версию MSD (новая, как вы помните, о ДОС умалчивает) в окне ДОС и посмотрим подробное описание установленной ДОС. Оно будет содержать следующие строки (для Windows 95 - чуть другие):

Operating System: MS-DOS 7.10
OEM Version String: Windows 98 [Версия 4.10.1998]


    То есть: "Операционная система: МС-ДОС 7.10, текстовая строка описания, установленная изготовителем: Windows 98 [Версия 4.10.1998].
   Вот вам и ответ. В ответ на команду VER выводится текстовая строка, заданная фирмой-изготовителем, а не реальный номер версии.
   Разобравшись с ДОС, перейдем к Windows. О номере версии 3.95 сообщают и еще долго будут сообщать те программы, которые используют 16-разрядный интерфейс Windows 3.х. На запрос, поступивший через этот интерфейс, и Windows 95, и Windows 98 дают ответ 3.95. Такое решение было принято для обеспечения совместимости со старыми программами, написанными для Windows 3.1. Оказалось, что авторы многих таких программ при проверке номера версии Windows игнорировали сам номер (3), проверяя только подверсию (.0 или .10). С их точки зрения, это было вполне логично. Ведь в Windows 2.х эти программы не запускались вообще, а о возможном появлении версии 4.0 авторы программ не задумывались. В результате, получив сообщение о номере версии 4.00, содержащем в номере подверсии ноль, программа заявляла, что не может работать в Windows 3.0.
   Чтобы избежать подобных ситуаций, было принято решение сообщать программам для Windows 3.x номер 3.95. При любой интерпретации этот номер означал версию, более новую, чем 3.1
Любопытно, что на эти грабли наступила и сама "Майкрософт". При запуске старых программ MSD из-под Windows они проверяют только номер подверсии, механически добавляя к нему тройку. Таким образом, в Windows 95 вы получаете сообщение о работающей в расширенном режиме версии 3.00, а в Windows 98 - о версии 3.10. В новых версиях MSD эта ошибка исправлена.
   И, наконец, про сообщение о Windows 2.x. Когда вы устанавливаете флажок "Не давать программе обнаружить Windows", то Windows 95/98 не дает программе ответ на запрос, работает ли Windows (такой запрос передается средствами ДОС). Большинство программ, не получив такого ответа, считают, что Windows не запущена. Некоторые же программы выполняют дополнительный поиск другими способами и обнаруживают, например, работу процессора в защищенном режиме и другие признаки, делая вывод, что запущена Windows 2.x.

   Последний штрих: в составе Windows 95/98 имеется программа MKCOMPAT. Она подобна команде SETVER, но сообщает программам ложный номер версии Windows и позволяет менять некоторые другие параметры работы указанной вами программы. Пользуйтесь на здоровье.

На главную страничку