A 64 bites Windows 7 kiadásával egy kis változás történt a mappák szokásos elosztásában a Windows könyvtárban. Két új mappa szerepel a Windows 10, a Windows 8 és a Windows 70 64 bites kiadásában. Ők Sysnative és SysWOW64 mappák. Ez csak a 64 bites Windows rendszerben van. Ha 32 bites Windows rendszert futtat 64 bites gépen, akkor nem fogja látni őket. Akkor sem fogja látni őket, ha 32 bites Windows rendszert futtat 32 bites gépen.
Van egy másik mappa a Windows könyvtáron kívül, és hívják Programfájlok (x86). Megszoktuk a Program Files mappa nevét, amely a programjaink futtatható fájljait tartalmazza. 64 bites rendszerekben a 64 bites programokat a Program Files mappában, míg a 32 bites programokat a Program Files (x86) tárolja. A Windows azonban valami emulációt használ a 32 bites programok futtatásához 64 bites gépen. Ezért tudni kell és meg kell érteni, hogy mik a rendszer mappái a Windows alatt (64 bites), hogy tudják, hogyan lehet elérni a kívánt fájlt.
Ellentétben a 32 bites gépekkel, ahol a 32 bites DLL fájlok a System32 mappa, a Windows 64 bites verziója a 64 bites fájlokkal kapcsolatos DLL-eket a System32 mappában tárolja. Ennek célja a programozási célok megkönnyítése és a visszamenőleges kompatibilitás biztosítása. Vagyis ha egy 64 bites program a System32-re hivatkozik a kódjában, akkor a meghíváskor automatikusan megkapja a 64 bites DLL-t. Ez segít a fejlesztőknek, mivel nem kell megváltoztatniuk a kódot a 64 bites Windows-os programjaikban.
Röviden: a Windows az összes 32 bites DLL-t áthelyezte a Windows könyvtár System32 mappájából egy másik mappába, így a korábbi programokat nem kell átkódolni ahhoz, hogy még a API-k használata esetén is megszerezzék a megfelelő DLL-eket - a 64 bitesre történő frissítés után. A probléma akkor fordul elő, amikor egy 32 bites alkalmazás megpróbálja elérni a System32 mappát. Ebben az esetben a program összeomlik, mivel nincs megírva 64 bites DLL-ek kezelésére.
Olvas: Mi a Panther mappa?
SysWOW64 mappa 64 bites Windows rendszerben
Az összes 32 bites DLL-t áthelyezték az újba SysWOW64 mappa a Windows 10, Windows 8 és Windows 7 64 bites verziójában, tehát amikor a 32 bites programok 32 bites DLL-eket hívnak meg, el kell érniük a SysWOW64 mappát.
Úgy érezheti, hogy a fejlesztőknek be kell vizsgálniuk programjaikat és alkalmazásukat, hogy a DLL funkciókat a SysWOW64 mappába mutassák. De a Microsoft már gondoskodott róla. Ha egy 32 bites program hív C: \ Windows \ System32, egy emulátor átirányítja az elérési utat C: \ Windows \ SysWOW64. Vagyis 32 bites programok futtatásához 64 bites Windows rendszerben emulátort használnak, hogy megfelelő visszamenőleges kompatibilitás álljon fenn, és elkerüljék a hibákat a DLL fájlok hívásakor.
Olvas: Mi a TALÁLT.000 mappa?
Sysnative mappa 64 bites Windows rendszerben
Előfordulhat, hogy egy 32 bites programhoz vagy alkalmazáshoz 64 bites DLL szükséges. Ebben az esetben az átirányítási mappát kell használnia Sysnative. A SysNative virtuális mappának és aliasnak tekinthető, amely a System32 mappára mutat. Fizikailag nem létezik a rendszerén, mint ilyen.
Tehát, ha 32 bites programjának 64 bites DLL-hez kell hozzáférnie, ne használja C: \ Windows \ System32 mert a 32 bites programemulátor elviszi a SysWOW64 nevű 32 bites DLL mappába. Ehelyett használja C: \ Windows \ SysNative mint a DLL program elérési útja. Ha a Sysnative programot az útvonalon használja, akkor az a System32 mappába irányítja át a SysWOW64 mappa helyett.
Ha megnyitja a File Windows Intézőt, nem találja a Sysnative mappát a C: \ Windows fájlban. Még akkor is, ha a Mappabeállítások beállítást választja a rejtett és a rendszermappák megjelenítésére. Ez azért van, mert a Windows File Explorer egy 64 bites program, amikor 64 bites Windows rendszerben fut, és a Sysnative mappa csak a 32 bites programokból látható és elérhető.
Összefoglalva:
- A System32 mappák 64 bites DLL fájlokat tartalmaznak.
- A SysWOW64 32 bites DLL fájlokat tartalmaz, és a 32 bites programokat automatikusan átirányítják erre a mappára
- A Sysnative egy átirányítási mappa, amely lehetővé teszi a 32 bites programok számára a 64 bites DLL-ek meghívását.
További olvasmány: MSDN.
Szeretné tudni, mi a különbség a System32 és a SysWOW64 mappák között?