Jak kód Windows 95 stále přežívá uvnitř Windows 11

Windows 11 stále obsahuje funkční část jádra Windows 95. Oprava kompatibility nazvaná EmulateHeap zajišťuje některým starším aplikacím chování odpovídající tolerantnějšímu správci paměti ve Windows 95. Tato oprava je stále uvedena v systémech Windows 11 26H2.
Tento důraz na zpětnou kompatibilitu lze vysledovat až ke hře SimCity, která ve Windows 95 fungovala správně až poté, co pro ni MS vytvořil speciální kód operačního systému.

MS kvůli SimCity změnil správu paměti ve Windows 95
Aplikace si za běhu vyžádají od Windows paměť a uvolní ji, jakmile ji již nepotřebují. Čtení paměti po jejím uvolnění je chyba známá jako use-after-free a původní SimCity pro Windows 3.x takovou chybu obsahovalo.
Joel Spolsky, spoluzakladatel Stack Overflow a bývalý inženýr MSu, tento problém popsal v eseji z roku 2000, v níž citoval Jona Rosse, vývojáře této verze SimCity. Ross připustil, že hra omylem četla paměť bezprostředně po jejím uvolnění. Ve Windows 3.x zůstal problém bez povšimnutí, protože obsah této paměti byl stále dostupný.

SimCity přestalo správně fungovat v betaverzích Windows 95. Místo čekání na opravu hry MS přidal kód, který rozpoznal spuštění SimCity a přepnul alokátor paměti do speciálního režimu, v němž se paměť neuvolňovala okamžitě.
MS tak ve výsledku upravil Windows, aby kompenzoval chybu v jediné hře.
MS znovu zkompiloval správce haldy Windows 95 pro starší aplikace
Řešení pro SimCity bylo navrženo pro jediný program, ale na podobném chování závisely i další aplikace. Inženýr MSu Raymond Chen v roce 2010 v rubrice Windows Confidential vysvětlil, že některý software spoléhal na zvláštnosti haldy Windows 95, včetně možnosti číst uvolněnou paměť a nalézt v ní nezměněné předchozí hodnoty.
Tyto aplikace mohly v novějších verzích Windows padat, protože ty pracovaly s pamětí jinak.

MS tento problém vyřešil pomocí nástroje EmulateHeap. Tato oprava kompatibility přesměrovává volání aplikace související s haldou—včetně funkcí od HeapCreate po LocalLock a GlobalReAlloc—na náhradní implementace, které napodobují chování Windows 95.
Chen toto řešení označil za mimořádně jednoduché a zároveň velmi neobvyklé: MS vzal zdrojový kód správce haldy Windows 95, znovu jej zkompiloval a začlenil do infrastruktury pro kompatibilitu aplikací.
Významná část jádra Windows 95 se tak nachází uvnitř systému Windows pro kompatibilitu aplikací. Tento historický kód se však z úložiště načítá pouze tehdy, když je EmulateHeap povolen pro konkrétní aplikaci. Windows 11 kód Windows 95 nespouští nepřetržitě na pozadí.
EmulateHeap je oddělený od původního řešení pro SimCity. Obě řešení odrážejí rozsáhlé úsilí MSu o zpětnou kompatibilitu, které později ukázala také skrytá databáze oprav aplikací ve Windows XP, jde však o dvě odlišná řešení.
Jak najít EmulateHeap ve Windows 11
EmulateHeap lze zobrazit pomocí nástroje Compatibility Administrator, bezplatného nástroje MSu pro správce IT, který uvádí opravy kompatibility obsažené ve Windows. MS definuje opravu kompatibility, známou také jako shim, jako malý úsek kódu, který zachycuje volání API prováděná aplikacemi.
Compatibility Administrator je součástí sady Windows Assessment and Deployment Kit (ADK). Vydání ze září 2026 oficiálně podporuje Windows 11 26H2, kde lze EmulateHeap najít následujícím postupem:
Nainstalujte Windows ADK a vyberte Application Compatibility Tools.

V nabídce Start otevřete 32bitový Compatibility Administrator.

Vytvořte novou databázi kompatibility.

Projděte dostupné opravy kompatibility a vyhledejte EmulateHeap.

EmulateHeap má v moderních systémech určitá omezení
Přítomnost opravy kompatibility nezaručuje, že bude správně fungovat za všech okolností. Po aktualizaci Windows 11 22H2 uživatelé hlásili, že zapnutí tohoto shimu způsobovalo ztrátu zvuku ve hrách, jako je GTA: Vice City, zatímco Need for Speed: Most Wanted mohl spadnout.
MS nahrazuje dialogové okno Vlastnosti z éry Windows 95 technologií WinUI 3, přesto nadále zachovává správce haldy Windows 95 pro malý počet starších aplikací. Takto rozsáhlá snaha o kompatibilitu se však nevztahovala na 3D Pinball, který byl odstraněn kvůli chybě v 64bitové verzi, jejíž oprava by podle vývojového týmu neospravedlnila několik dní práce.

