Hva er forskjellen mellom "System32" og "SysWOW64" mapper i Windows?

Innholdsfortegnelse:

Hva er forskjellen mellom "System32" og "SysWOW64" mapper i Windows?
Hva er forskjellen mellom "System32" og "SysWOW64" mapper i Windows?
Anonim
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 kjørbare 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?
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 kjørbare 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.

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

På en 64-biters versjon av Windows har du en mappe C: Program Files 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.
På en 64-biters versjon av Windows har du en mappe C: Program Files 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 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.

Anbefalt: