Hva er System32?
System32-katalogen inneholder Windows-systemfiler, begge.DLL-biblioteksfiler som brukes av programmer og.EXE-programverktøy som er en del av Windows. Mens de fleste av filene du finner her er en del av Windows-operativsystemet, installerer tredjepartsprogrammer noen ganger sine egne DLL-filer til denne mappen.
Programmer som kjører på systemet, kan installeres i mappen Program Files eller andre steder, men de laster ofte systembrede biblioteker fra System32-mappen.
Separere 32-biters og 64-biters biblioteker
Hvis et 32-bits program går for å laste en DLL-fil den trenger, finner en 64-biters versjon, og prøver å laste den, den vil krasje. Ved å skille 64-biters og 32-biters programvare i to forskjellige Programmer-mapper, sikrer Windows at de ikke vil bli blandet opp og forårsaket problemer.
Men ikke alle DLL-filer lagres i Programfiler. Mange systemoverskrivende biblioteker som følger med Windows, er lagret i C: System32, og enkelte programmer dumper også sine egne biblioteksfiler her. Så, akkurat som Windows har separate 32-biters og 64-bits programfiler-mapper, har det også separate 32-biters og 64-biters versjoner av System32-mappen.
System32 og SysWOW64
På en 32-biters datamaskin lagrer alle 32-biters programmene sine filer i C: Program Files, og hele systemet på biblioteket er C: System32.
På en 64-biters datamaskin lagrer 64-biters programmer sine filer i C: Program Files, og den hele systemet C: Windows System32 inneholder 64-biters biblioteker. 32-biters programmer lagrer sine filer i C: Program Files (x86), og den hele systemet er C: Windows SysWOW64.
Dette er definitivt counterintuitive. Til tross for "32" i navnet inneholder System32-mappen 64-biters biblioteker. Og til tross for 64 i navnet, inneholder SysWOW64-mappen 32-bits biblioteker - i hvert fall på 64-biters versjoner av Windows.
Generelt trenger du ikke å vite dette. Windows-operativsystemet og programmene du bruker, plasserer automatisk filene på riktig sted og bruker riktig mappe. Men hvis du noen gang trenger å manuelt installere en DLL-fil på riktig sted eller finne hvor en er installert, noe som er veldig sjeldent, må du vite hvilken er hvilken.
WOW64, forklart
Hvis du for eksempel installerer et 32-biters program på en 64-biters versjon av Windows, og det prøver å skrive til mappen C: Program Files, peker WoW64 på C: Program Files (x86). Og hvis den vil ha tilgang til mappen C: Windows System32, peker WoW64 på C: Windows SysWOW64. Windows gjør dette ved hjelp av et omdirigeringssystem for filsystemet.
Alt dette skjer automatisk og gjennomsiktig i bakgrunnen. Programmet behøver ikke engang å vite at det kjører på et 64-biters operativsystem, noe som gjør at eldre 32-bits programmer kan kjøre uten endring på 64-biters versjoner av Windows. WOW64 omdirigerer også tilgang til register, og sikrer at det er separate områder i registret for 64-biters og 32-biters programmer.
Så hvorfor er System32 64-bit, og SysWOW64 32-bit?
Alt som bringer oss tilbake til spørsmålet om million dollar: Hvorfor er "System32" -mappen 64-bit, og SysWOW64 32-bit?
Svaret ser ut til at mange 32-biters applikasjoner var hardkodede for å bruke katalogen C: Windows System32. Når utviklere omkompilerte disse programmene for 64-biters versjoner av Windows, fortsatte de å bruke katalogen C: Windows System32.
I stedet for å gi nytt navn til katalogen og tvinge utviklere til å flytte til den nye, bryte mange applikasjoner i prosessen, forlot Microsoft "System32" som standard systembibliotekskatalog. De opprettet et nytt bibliotekskatalog for programmer som kjører under WoW64-laget, som de kalt "SysWOW64". Når du tenker på det på denne måten, er navnet mer fornuftig.
Ja, det er litt dumt at en katalog med "32" i navnet nå er 64-bit. Kanskje Microsoft burde ha sett det som kommer da de kalte det C: Windows System32 på 90-tallet. Men, selv om en mer enklere navngivningssystem ville være hyggelig, er det ikke verdt å bryte en rekke programmer og skape mer arbeid for utviklere bare for å komme seg dit. Det betyr at vi sitter fast med System32 og SysWOW64 i overskuelig fremtid.