Windows XP обманывала старые программы, чтобы они продолжали работать
Система могла притвориться другой Windows - и только для определенной версии программы.
Ветеран Microsoft Рэймонд Чен рассказал, как Microsoft обеспечивала совместимость Windows XP с приложениями, выпущенными задолго до релиза операционной системы. Оказалось, Windows XP использовала специальную базу проблемных приложений.
Благодаря этому Windows XP могла менять собственное поведение отдельно для каждой программы — вплоть до подмены версии Windows и запуска старого диспетчера памяти, позаимствованного у Windows 95.
Microsoft хранила базу проблемных приложений в Application Compatibility Database — файл назывался Sysmain.sdb. При запуске приложения ОС могла проверять не только имя исполняемого файла, но и его размер, контрольную сумму, версию, дату и содержимое папки. Это позволяло применять исправление к конкретной версии программы.
После обнаружения совпадения Windows подключала программные прослойки между приложением и системными API. Они могли менять параметры вызовов, корректировать ответы Windows или выполнять дополнительный код: например, Win98VersionLie сообщал старому приложению, что оно работает в Windows 98.
Еще одна прослойка, EmulateHeap, заменяла стандартный механизм управления памяти копией диспетчера кучи Windows 95. Это помогало запускать старые программы, зависевшие от особенностей распределения памяти в предыдущих версиях ОС.
Реализовать такую систему решили по коммерческим причинам — как объясняет Чен, одно несовместимое приложение могло сорвать переход целой компании на новую версию Windows. Особенно серьезной проблемой оказались программы, созданные на Visual Basic для конкретных компаний и оставшиеся без поддержки после ухода их разработчиков.
- Windows 11 исполнилось 5 лет
- Windows 11 26H2 снизила расход памяти на некоторых ПК
- СМИ: сериал по «Форсажу» запустили в производство
- PlayStation 5 получила новую ревизию с переделанным охлаждением
- Microsoft выпустила Windows 11 26H2 — сюрпризов не будет
- Windows 11 снова сломалась после обновления: вместо рабочего стола появляется черный экран

