Windows on Windows (WOW) – kompatibilitetslager i Windows NT för 16-bitarsprogram

Lär dig om Windows on Windows (WOW) — kompatibilitetslager i Windows NT som låter dig köra äldre 16-bitarsprogram från Windows 3.x effektivt och säkert.

Författare: Leandro Alegsa

Windows on Windows (ofta förkortat WOW) är ett kompatibilitetslager i x86-versioner av Microsoft Windows NT-familjen av operativsystem som gör det möjligt att köra många äldre 16-bitars program som är gjorda för Windows 3.x eller tidigare.

 

Hur det fungerar

WOW är en samling komponenter i Windows NT som översätter och kör 16-bitars Windows‑kod på en 32‑bitars NT-kärna. Viktiga delar är bland annat ntvdm.exe (NT Virtual DOS Machine) för DOS- och vissa 16‑bitarsprogram, samt processer och DLL:er som wowexec och wow32.dll som hanterar Win16‑subsystemet. När ett 16‑bitarsprogram startas körs det i en emulerad/virtuell 16‑bitarsmiljö där anrop till äldre API:er "thunkas" (översätts) till motsvarande 32‑bitarsanrop i Win32‑API:et. Thunking inkluderar omvandling av pekare, parametrar och vissa strukturformat så att gamla program kan samarbeta med den moderna kärnan och minnesmodellen.

Viktiga egenskaper

  • 16‑bitarsprogram körs i en eller flera gemensamma 16‑bitarsmiljöer; flera gamla program delar ofta samma 16‑bitarsadressrymd vilket kan göra dem mindre isolerade än vanliga 32‑bitarsprocesser.
  • WOW tillåter många äldre program att köras utan källkodsändringar genom API‑översättning och emulation av vissa beteenden från Windows 3.x.
  • Systemanrop som kräver direkt åtkomst till hårdvara eller 16‑bitarsenhetsdrivrutiner stöds normalt inte under WOW; sådana program kan därför fungera dåligt eller inte alls.

Begränsningar och vanliga problem

  • Ingen fullständig isolering: Eftersom flera 16‑bitarsapplikationer ofta körs i samma VDM kan ett fel i ett program påverka andra 16‑bitarsprogram.
  • Drivrutiner och kernel‑åtkomst: 16‑bitarsenhetsdrivrutiner och program som kräver direkt hårdvaruåtkomst fungerar inte i WOW.
  • Installationsprogram: Många äldre 16‑bitarsinstallationsprogram antar direkt hårdvaruåtkomst eller gamla minnesmodeller och kan därför misslyckas.
  • Ej på 64‑bitars‑Windows: På x64‑versioner av Windows finns inte NTVDM/Win16‑subsystemet vilket innebär att 16‑bitarsprogram inte kan köras direkt (se nedan).

WOW och 64‑bitars Windows (WOW64 vs WOW)

Det är viktigt att skilja på WOW (Windows on Windows för 16‑bitarsprogram på 32‑bitars Windows) och WOW64 (Windows on Windows 64), som är en separat kompatibilitetsmekanism för att köra 32‑bitarsprogram på 64‑bitars Windows. WOW64 låter 32‑bitarsapplikationer köras på x64 Windows men innehåller inte NTVDM eller Win16‑stöd. Det betyder att 16‑bitarsprogram inte fungerar på 64‑bitarsversioner av Windows utan alternativa lösningar.

Praktiska råd och alternativ

  • På 32‑bitars Windows: NTVDM och WOW är oftast tillgängliga. I nyare Windows‑versioner kan NTVDM aktiveras via "Program och funktioner" → "Windows‑funktioner" → "Legacy Components" → "NTVDM".
  • På 64‑bitars Windows: Kör 16‑bitarsprogram i en virtuell maskin (t.ex. Hyper‑V, VirtualBox, VMware) med en 32‑bitars eller äldre Windows‑installation, eller använd specialiserade emulatorer som DOSBox för DOS‑baserade program.
  • Portning/ersättning: Om möjligt är det bäst att uppdatera eller ersätta kritiska äldre program med moderna 32‑/64‑bitarsvarianter för bättre säkerhet och stabilitet.
  • Windows XP Mode / äldre virtuella bilder: För äldre Windows‑applikationer kan virtuella bilder med Windows XP eller Windows 7 (32‑bit) vara en praktisk väg för kompatibilitet.

Säkerhet och underhåll

Eftersom 16‑bitarsprogram ofta är gamla saknar de moderna säkerhetsfixar. Att köra dessa program kan innebära säkerhetsrisker, särskilt om de får nätverksåtkomst eller körs med höga privilegier. Använd isolering (virtuella maskiner) och överväg att migrera kritiska arbetsflöden till stödda program.

Sammanfattningsvis erbjuder Windows on Windows ett användbart sätt att köra många äldre 16‑bitarsprogram på x86‑versioner av Windows NT genom översättning och emulation, men funktionen har tekniska och säkerhetsrelaterade begränsningar och finns inte på 64‑bitars Windows. För ofullständigt stöd är virtualisering eller portning ofta bästa alternativet.

Bakgrund

WOW gör att många 16-bitars Windows-program kan köras utan ändringar i nyare 32-bitarsversioner av Windows. Detta gjordes för att ge programvaruutvecklare tid att göra sina program 32-bitarsprogram medan folk gick från Windows 3.1x till Windows 95, så att operativsystemet kan uppgraderas till en nyare version samtidigt som de flesta, eller alla, 16-bitarsprogrammen hos en kund kan köras.

Operativsystemen Windows 9x, som byggde på DOS, hade både 16- och 32-bitarssystem, så om operativsystemet behöll 16-bitsdelarna kunde det köra 16-bitarsprogram utan emulering. NT-baserade versioner är mycket annorlunda i hur de körs, så de behöver en mer sofistikerad lösning. Det finns två huvudsakliga tekniker för att låta 16-bitars program köras på 32-bitarsversioner av Windows (med vissa begränsningar) som kallas thunking och shimming.

Thunking

WOW "thunkar" 16-bitars instruktioner till 32-bitars motsvarigheter för att tillåta 16-bitars pekare, minnesutrymmen och adressutrymmen.

16-bitarsprogram körs vanligtvis i en enda virtuell DOS-maskin och delar minnet mellan dem. De kan dock ändras så att de körs i ett privat, separat minnesutrymme, där varje 16-bitarsprocess har en separat process. Detta kan minska antalet systemkrascher genom att program inte får störa andra, men det kan leda till minskad kommunikation mellan 16-bitars-processer och kan använda mer av datorns minne.

WOW är en del av 32-bitarsutgåvorna av Windows NT. 64-bitarsversioner av Windows (inklusive Windows Server 2008 R2 och senare där de endast har 64-bitarsversioner) kan inte köra 16-bitars programvara utan att använda olika emuleringsprogram (till exempel DOSBox).

WOWEXEC.EXE på Windows NT gör det möjligt för WoW att fungera. Windows-on-Windows kan med hjälp av filen WIN.COM emulera Windows 3.x (för NTVDM), Windows 95 och Windows 98-kärnorna, som kan köra 16-bitars DOS-drivna Windows-program på Windows NT.

Skimning

Problem med program som körs på nyare operativsystem, särskilt med långa filnamn, flera användarkonton och minsta möjliga privilegier, kan göra att vissa program inte fungerar korrekt. De kan till exempel felaktigt tro att de kan skriva filer till alla delar av filsystemet, men NTFS-filbehörigheter finns och tillåter inte detta i många systemmappar. När Microsoft byggde Windows 95 var de tvungna att se till att gamla program fortfarande fungerade med 8.3-filnamn för att gamla program skulle kunna fortsätta att fungera korrekt. Sedan Windows 95 finns det en funktion där både ett långt och ett kort filnamn behålls, så att äldre program fortfarande kan använda 8.3-filnamn.

Program som försöker komma åt maskinvaran direkt kan inte göra det. Gamla program kanske inte heller fungerar om de förväntar sig vissa systemkonfigurationsfiler från DOS och Windows 9x som inte används i Windows NT-operativsystemen, så tomma versioner av filer som AUTOEXEC.BAT och CONFIG.SYS finns trots att Windows NT inte använder dem.

Det finns många shims i programkompatibilitetslagret i senare versioner av Windows för att fånga upp och ändra API-anrop från gamla program som skapats med andra antaganden om operativsystemet i åtanke.

 

Relaterade sidor

 


Sök
AlegsaOnline.com - 2020 / 2025 - License CC3