Почему программное обеспечение Windows 9x может работать на Windows 7 64-бит?

Почему программное обеспечение Windows 9x может работать на Windows 7 64-бит?

В течение многих лет (спустя много лет после появления Windows XP) я пользовался коллекцией старых настольных ПК с Windows 9x. По сути, эти машины были слишком слабыми по своим аппаратным характеристикам, чтобы их можно было обновить до XP (и они стоили кучу денег), поэтому я продолжал использовать их с их оригинальным программным обеспечением: различными установками Windows 98SE и Windows ME (все работали как 32-битные версии).

В конце концов, я никогда не пользовался XP. Машины с Win9x были настолько надежны, что работали еще долго после того, как XP и Vista пришли и ушли. Но в конце концов мне пришлось перейти, со временем, на Windows 7 64-bit.

Я не собираюсь делать что-то совсем глупое, например, спрашивать, почему такая-то программа не работает на Win7 64bit! :-)

Все без исключения программы, которые я запускал на 32-битной Windows 98SE, работали «из коробки» (если можно так выразиться) на архитектуре Win7 NT 64bit. Сегодня я все еще использую множество этих программ, особенно текстовые процессоры и HTML-редакторы, которые я использую регулярно.

Есть ли техническая причина, по которой я никогда не испытывал ожидаемых трудностей при запуске программ Windows 9x на 64-битной NT? Мне рассказывали о настройках «совместимости» на Win7, но мне никогда не приходилось запускать программу в «режиме совместимости».

Я знаю, что Windows 7 хранит 32- и 64-разрядное программное обеспечение в разных местах и ​​обрабатывает их по-разному, но я ожидал, что это связано с 32- и 64-разрядными программами, написанными для Windows 7.

Я удивлен, что программы Windows 98 32bit, похоже, полностью совместимы с программами Windows XP/Vista/7 32bit, и хотел бы понять, почему это так. Неужели между ними нет никакой разницы?

Кроме того, многие старые программы Windows 9x были/есть портативными. Я привык помещать их на USB-накопители или на рабочий стол Windows 7 и просто запускать их. У меня не возникло никаких проблем. Даже несмотря на то, что они не запускаются из папки Program Files. Опять же, я хотел бы понять, почему ОС не возражает против этого с технической точки зрения?

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

решение1

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

Хотя основные средства массовой информации приложили немало усилий, чтобы придать Windows незаслуженную репутацию в области совместимости приложений, факт в том, что Microsoft вложила значительные средства в обратную совместимость, и подавляющее большинство приложений, написанных для Windows 98, по-прежнему можно использовать в Windows 7. Кроме того, Windows 7 — самая стабильная операционная система, когда-либо разработанная Microsoft. Не заблуждайтесь, разница между Windows 7 и Windows 98 огромна, но:

  • Windows 98 использовала богатый API Windows, который Microsoft не стала переписывать просто так! Например, интерфейс длярисование прямоугольника на экране,создание окнаилиотображение строки менювсе то же самое.
  • В Windows 7 реализованы меры, направленные на решение проблем совместимости устаревшего программного обеспечения. Одной из них является виртуализация UAC. Приложения Windows 98 записывали свои данные приложений в папку установки. Windows 7 больше не позволяет этого делать; однако для устаревших приложений виртуализация UAC перенаправляет операцию записи данных за пределы папки установки приложения в %LOCALAPPDATA%\VirtualStore.

Приложения эпохи Windows 98, которые больше не работают в Windows 7, включают 16-разрядные приложения (которые не работают в 64-разрядной версии Windows, но иногда работают в 32-разрядной версии Windows) и приложения, которые полагаются либо на хаки, либо на скрытые устаревшие службы ОС.

решение2

Вы задаете здесь много вопросов, некоторые из них довольно сложные, но основной ответ: «Microsoft прилагает массу усилий для поддержания обратной совместимости». Честно говоря, лучшим вопросом может быть «почему бы это не сработало?», поскольку и Win9x, и NT (включая Win7) используют Win32 API и набор инструкций x86 (64-битные расширения AMD для набора инструкций Intel x86 обратно совместимы; процессор «x64», работающий в 64-битном режиме, может также запускать 32-битные программы).

Наиболее вероятной причиной, по которой что-то не работало, были бы просто элементы управления доступом. Win9x вообще не поддерживала никаких элементов управления доступом; любая программа могла делать все, что ей вздумается. При злонамеренном использовании это делало написание вредоносного ПО действительно простым. При не злонамеренном, но ленивом использовании это означало, что многие разработчики писали свои программы таким образом, что программы записывали данные в свои установочные папки. Это плохая идея по ряду различных причин, не последней из которых является безопасность; в «реальной» ОС местоположение по умолчанию, в которое устанавливаются файлы, не позволяет не-администраторам записывать в файлы, и вы должны работать как не-администратор, за исключением случаев установки/обновления программного обеспечения.

Конечно, вся эта штука «запись в каталог, из которого вы работаете» — этолегкий(Я же говорил, что разработчики ленивы...) и да, это также делает программное обеспечение «переносимым» в том смысле, что вы можете поместить его на флэш-накопитель (который обычно также полностью лишен контроля доступа, поскольку они используют варианты файловой системы FAT, а FAT не поддерживает права доступа к файлам). Запуск программного обеспечения таким образомявляетсяменее безопасно, чем установка в зоне с ограниченным доступом и запуск оттуда (как пользователь без прав администратора), но это, вероятно, приемлемо, если вы не делите компьютер с другими людьми.

А почему ОС не возражает... почему вы ожидаете, что она будет возражать Program Files?особенныйпапка в любом случае, это просто место, куда, по соглашению, вы устанавливаете программы. (На самом деле, это действительно глупое соглашение, потому что некоторые программы перестают работать, если вы устанавливаете их в папку с пробелами в пути, но, возможно, MS хотела убедиться, что разработчики не совсемчтоlazy...) Единственная особенность в том Program Files, что в 64-битных системах, когда 32-битные процессы запрашивают папку "Program Files", они фактически направляются в эту Program Files (x86)папку. Кроме того... ОС позволяет вам запускать программы из любого места, к которому у вас, пользователя, есть доступ. Некоторые программы намеренно устанавливаются в ваш профиль пользователя или в свою собственную папку в корне диска ( C:\Python27это обычная папка, которую можно увидеть на машине разработчика). Эти программы работают просто отлично.

Связанный контент