Hva er forskjellen mellom System32 og SysWOW64 mapper i Windows?
På 64-biters versjoner av Windows har du to separate programfiler-mapper. Men det slutter ikke der. Du har også to separate systemkataloger hvor DLL-biblioteker og eksekverbare filer er lagret: System32 og SysWOW64. Til tross for navnene, er System32 full av 64-biters filer og SysWOW64 er full av 32-biters filer. Så hva gir?
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 også.
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
I en 64-biters versjon av Windows har du en mappe C: \ Programfil med 64-biters programmer og deres filer, og en mappe C: \ Program Files (x86) som inneholder 32-biters programmer og deres filer. Det er nyttig for disse filene å bli separert fordi 64-biters programmer trenger 64-biters DLL-filer, og 32-bits programmer trenger 32-biters DLL-filer.
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 programfiler, sikrer Windows at de ikke blir blandet 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 noen 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-biters 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
"WOW64" -delen av navnet her refererer til Microsofts "Windows 32-bit på Windows 64-bit" -programvare, som er en del av operativsystemet. Dette gjør at Windows kan kjøre 32-biters programmer på en 64-biters versjon av Windows. WoW64 omdirigerer filtilgang for å sikre at programmene fungerer som de skal.
Hvis du for eksempel installerer et 32-biters program på en 64-biters versjon av Windows, og det forsøker å 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 transparent 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 modifikasjon 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 å omdøpe katalogen og tvinge utviklere til å flytte til den nye, bryte mange applikasjoner i prosessen, forlot Microsoft "System32" som standard systembibliotekskatalog. De opprettet en ny 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 enklere navngivningssystem ville være hyggelig, er det ikke verdt å bryte en haug med 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.