Jak kod systemu Windows 95 nadal przetrwał w Windows 11

Windows 11 nadal zawiera funkcjonalny fragment jądra systemu Windows 95. Poprawka zgodności o nazwie EmulateHeap zapewnia niektórym starszym aplikacjom zachowanie naśladujące bardziej tolerancyjny mechanizm zarządzania pamięcią z Windows 95. Poprawka nadal znajduje się na liście w systemach Windows 11 26H2.
To przywiązanie do zgodności wstecznej ma swoje korzenie w grze SimCity, która działała prawidłowo w Windows 95 dopiero po utworzeniu przez MS specjalnego kodu systemu operacyjnego.

MS zmienił sposób zarządzania pamięcią w Windows 95 z myślą o SimCity
Podczas działania aplikacje żądają pamięci od systemu Windows, a następnie zwalniają ją, gdy nie jest już potrzebna. Odczytywanie pamięci po jej zwolnieniu jest błędem określanym jako use-after-free, a pierwotna wersja SimCity dla Windows 3.x zawierała właśnie taką usterkę.
Joel Spolsky, współzałożyciel Stack Overflow i były inżynier MSu, opisał ten problem w eseju z 2000 roku, powołując się na Jona Rossa, który opracował tę wersję SimCity. Ross przyznał, że gra przez pomyłkę odczytywała pamięć natychmiast po jej zwolnieniu. Problem pozostał niezauważony w Windows 3.x, ponieważ zawartość tej pamięci nadal była dostępna.

SimCity przestało działać prawidłowo w wersjach beta Windows 95. Zamiast czekać na poprawkę do gry, MS dodał kod wykrywający uruchomienie SimCity i przełączający alokator pamięci w specjalny tryb, w którym pamięć nie była natychmiast zwalniana.
W praktyce MS zmodyfikował system Windows, aby zrekompensować błąd w jednej grze.
MS ponownie skompilował menedżera sterty z Windows 95 dla starszych aplikacji
Obejście przygotowane dla SimCity zostało zaprojektowane z myślą o jednym programie, ale także inne aplikacje polegały na podobnym zachowaniu. Inżynier MSu Raymond Chen wyjaśnił w 2010 roku w rubryce Windows Confidential, że część oprogramowania była zależna od specyficznych zachowań sterty Windows 95, w tym od możliwości odczytywania zwolnionej pamięci i znajdowania w niej niezmienionych wcześniejszych wartości.
Aplikacje te mogły ulegać awarii w późniejszych wersjach systemu Windows, ponieważ nowsze wydania inaczej zarządzały pamięcią.

MS rozwiązał ten problem za pomocą funkcji EmulateHeap. Ta poprawka zgodności przekierowuje wywołania aplikacji związane ze stertą—w tym funkcje od HeapCreate po LocalLock i GlobalReAlloc—do zastępczych implementacji odtwarzających zachowanie Windows 95.
Chen określił to rozwiązanie jako jednocześnie niezwykle proste i bardzo nietypowe: MS wykorzystał kod źródłowy menedżera sterty z Windows 95, ponownie go skompilował i włączył do infrastruktury zgodności aplikacji.
W rezultacie znaczna część jądra Windows 95 istnieje w ramach mechanizmu zgodności aplikacji systemu Windows. Ten starszy kod jest jednak wczytywany z pamięci masowej tylko wtedy, gdy funkcja EmulateHeap zostanie włączona dla konkretnej aplikacji. Windows 11 nie uruchamia stale kodu Windows 95 w tle.
EmulateHeap jest rozwiązaniem odrębnym od pierwotnego obejścia przygotowanego dla SimCity. Oba rozwiązania odzwierciedlają szeroko zakrojone działania MSu na rzecz zgodności wstecznej, później widoczne także w ukrytej bazie poprawek zgodności aplikacji w Windows XP, ale są to dwa różne mechanizmy.
Jak znaleźć EmulateHeap w Windows 11
Funkcję EmulateHeap można wyświetlić za pomocą narzędzia Compatibility Administrator, bezpłatnego programu MSu dla administratorów IT, który zawiera listę poprawek zgodności dołączonych do systemu Windows. MS definiuje poprawkę zgodności, zwaną również shimem, jako niewielki fragment kodu przechwytujący wywołania API wykonywane przez aplikacje.
Narzędzie Compatibility Administrator jest częścią pakietu Windows Assessment and Deployment Kit (ADK). Wydanie z września 2026 roku oficjalnie obsługuje Windows 11 26H2, w którym funkcję EmulateHeap można znaleźć w następujący sposób:
Zainstaluj Windows ADK i wybierz opcję Application Compatibility Tools.

Otwórz 32-bitową wersję Compatibility Administrator z menu Start.

Utwórz nową bazę danych zgodności.

Przejrzyj dostępne poprawki zgodności i znajdź EmulateHeap.

EmulateHeap ma ograniczenia we współczesnych systemach
Obecność poprawki zgodności nie gwarantuje, że będzie ona działać prawidłowo w każdej sytuacji. Po aktualizacji Windows 11 22H2 użytkownicy zgłaszali, że włączenie shima powodowało utratę dźwięku w grach takich jak GTA: Vice City, natomiast Need for Speed: Most Wanted mogło ulegać awarii.
MS zastępuje pamiętające czasy Windows 95 okno dialogowe Właściwości rozwiązaniem opartym na WinUI 3, ale jednocześnie nadal zachowuje menedżera sterty z Windows 95 dla niewielkiej liczby starszych aplikacji. Tak daleko idące działania na rzecz zgodności nie objęły gry 3D Pinball, którą usunięto z powodu błędu w wersji 64-bitowej, ponieważ zespół programistów nie był w stanie uzasadnić poświęcenia kilku dni na jego naprawę.

