Med utgivelsen av Windows 7 på 64-bits, var det en liten forandring introdusert i den normale tildelingen av mapper i Windows-katalogen. To nye mapper er inkludert i 64-biters utgave av Windows 7, Windows 8 og Windows 10. De er Sysnative og SysWOW64 mapper. Dette er bare i 64-biters Windows. Hvis du kjører en 32-biters Windows på en 64-bits maskin, vil du ikke se dem. Du vil heller ikke se dem når du kjører 32-biters Windows på en 32-bits maskin.
Det er en annen mappe utenfor Windows-katalogen, og den kalles Programfiler (x86). Vi er vant til navnet på mappen Programfiler som huser kjørbarhetene til våre programmer. I 64-biters systemer lagres 64-biters programmene i Programfil-mappen mens 32-biters programmer er plassert i Programfiler (x86). Men Windows bruker noe som en emulering for å kjøre 32-biters programmer på en 64-bits maskin. Og derfor er det nødvendig å vite og forstå hva som er systemmappene under Windows (64 bit) slik at du vet hvordan du kommer til filen du vil ha.
I motsetning til 32-biters maskiner, hvor 32-biters DLL er lagret i System32-mappen, 64-bitersversjonen av Windows lagrer DLLer relatert til 64-bits i System32-mappen. Dette er for å lette programmeringsformålene og å gi bakoverkompatibilitet. Det vil si at hvis et 64-biters program refererer til System32 i sin kode, vil det få 64-bit DLL automatisk når det kalles. Dette hjelper utviklere som de ikke trenger å endre koden i sine programmer for Windows 64-bit.
Kort sagt, flyttet Windows alle 32-biters DLL-er fra System32-mappen i Windows-katalogen til en annen mappe, slik at tidligere programmer ikke trenger å bli omkodet for å få de riktige DLL-ene, selv når du bruker APIer - etter oppgradering til 64-bit. Problemet oppstår når en 32-bits applikasjon prøver å få tilgang til System32-mappen. I dette tilfellet vil programmet krasje som det ikke er skrevet for å håndtere 64-bit DLLs.
SysWOW64-mappe i Windows 64-bit
Alle 32-biters DLL-er har blitt flyttet til det nye SysWOW64-mappen i 64-bitersversjonen av Windows 7, Windows 8 og Windows 10, så når 32-biters programmene kaller 32-biters DLLer, må de nå SysWOW64-mappen.
Du kan føle at utviklerne må skanne programmer og programmer for å peke DLL-funksjonene til SysWOW64-mappen. Men Microsoft har allerede tatt vare på det. Hvis det er et 32-bits program som ringer C: Windows System32, vil en emulator omdirigere banen til C: Windows SysWOW64. Det vil si å kjøre 32-biters programmer i Windows 64-bit, en emulator brukes, slik at det er riktig bakoverkompatibilitet og for å unngå feil når du ringer DLL-filer.
Sysnative Folder i Windows 64-bit
Det kan være tilfeller der et 32-bits program eller program kanskje trenger en 64-bit DLL. I så fall må du bruke omadresseringsmappen Sysnative. Du kan vurdere SysNative å være en virtuell mappe og et alias som peker på System32-mappen. Det finnes ikke fysisk på systemet ditt som sådan. Så hvis ditt 32-bits program trenger tilgang til en 64-bit DLL, ikke bruk C: Windows System32 fordi 32-bits programemulatoren vil ta den til 32-biters DLL-mappen kalt SysWOW64. Bruk i stedet C: Windows SysNative som vei til DLL-programmet. Ved å bruke Sysnative i banen, omdirigeres den til System32-mappen i stedet for SysWOW64-mappen.
Hvis du åpner File Windows Explorer, finner du ikke Sysnative-mappen i C: Windows. Selv om du angir mappealternativer for å vise skjulte og systemmapper. Dette skyldes at Windows File Explorer er et 64-bits program når det kjøres i en 64-biters Windows, og Sysnative-mappen er synlig og tilgjengelig bare fra 32-biters programmer.
Å oppsummere:
- System32-mapper inneholder 64-biters DLL-filer.
- SysWOW64 inneholder 32-biters DLL-filer, og 32-biters programmene blir automatisk omdirigert til denne mappen
- Sysnative er en omadressering mappe som gjør at 32-biters programmer kan ringe 64-bit DLLs.
Tilleggsles: MSDN.