S izdavanjem Windows 7 od 64 bitova, došlo je do male promjene uobičajene raspodjele mapa u direktoriju sustava Windows. Dvije nove mape su uključene u 64-bitno izdanje sustava Windows 7, Windows 8 i Windows 10. Oni su Sysnative i SysWOW64 mape. Ovo je samo u 64-bitnom sustavu Windows. Ako pokrenete 32-bitni Windows na 64-bitnom računalu, nećete ih vidjeti. Niti ćete ih vidjeti kada pokrenete 32-bitni Windows na 32-bitnom računalu.
Postoji još jedna mapa izvan direktorija sustava Windows i poziva se Programske datoteke (x86), Koristili smo se za naziv mape Program Files koje sadrže izvršne programe naših programa. U 64-bitnim sustavima, 64-bitni programi pohranjeni su u programskoj mapi, dok su 32-bitni programi smješteni u programskim datotekama (x86). Međutim, sustav Windows koristi nešto poput emulacije za pokretanje 32-bitnih programa na 64-bitnom računalu. I stoga, potrebno je znati i razumjeti koje su mape sustava u sustavu Windows (64 bit), tako da znate kako doći do željene datoteke.
Za razliku od 32-bitnih strojeva, gdje su 32-bitni DLL-ovi spremljeni u Mapu System32, 64-bitna verzija sustava Windows sprema DLL vezane za 64-bitne datoteke u mapi System32. To olakšava programiranje i osigurava unatrag kompatibilnost. To jest, ako se 64-bitni program odnosi na System32 u svom kodu, automatski će dobiti 64-bitni DLL kada se zove. To pomaže razvojnim programerima jer ne moraju mijenjati kôd u svojim programima za 64-bitnu verziju sustava Windows.
Ukratko, Windows je premjestio sve 32-bitne DLL-ove iz mape System32 u direktoriju sustava Windows u neku drugu mapu tako da prethodne programe ne treba recodirati kako bi dobili odgovarajuće DLL čak i kada koristite API-je - nakon nadogradnje na 64-bitni. Problem se pojavljuje kada 32-bitna aplikacija pokušava pristupiti mapi System32. U tom slučaju, program će se srušiti jer nije napisan za obradu 64-bitnih DLL-ova.
SysWOW64 mapa u 64-bitnom sustavu Windows
Svi 32-bitni DLL-ovi premješteni su u novi SysWOW64 mapu u 64-bitnoj verziji sustava Windows 7, Windows 8 i Windows 10, pa kada 32-bitni programi zovu 32-bitne DLL-ove, oni moraju doći do mape SysWOW64.
Možda ćete smatrati da će programeri morati skenirati svoje programe i aplikacije kako bi usmjerili DLL funkcije u mapu SysWOW64. No Microsoft je već to brinuo. Ako je 32-bitni program koji zove C: Windows System32, emulator će preusmjeriti put do C: Windows SysWOW64, To jest, za pokretanje 32-bitnih programa u 64-bitnom sustavu Windows, koristi se emulator, tako da postoji odgovarajuća kompatibilnost unatrag i da se izbjegavaju pogreške prilikom pozivanja DLL datoteka.
Sysnative Folder u 64-bitnom sustavu Windows
Možda postoje slučajevi u kojima 32-bitni program ili program zaista trebaju 64-bitni DLL. U tom slučaju, morat ćete koristiti mapu preusmjeravanja Sysnative, SysNative možete smatrati virtualnom mapom i aliasom koji upućuje na mapu System32. On ne postoji fizički na vašem sustavu, kao takav. Dakle, ako vaš 32-bitni program treba pristupiti 64-bitnom DLL-u, nemojte ga koristiti C: Windows System32 jer će 32-bitni programski emulator odvesti na 32-bitnu DLL mapu pod nazivom SysWOW64. Umjesto toga, koristite C: Windows SysNative kao put do DLL programa. Korištenje Sysnative na putu će je preusmjeriti na mapu System32 umjesto SysWOW64 mape.
Ako otvorite Windows Explorer, nećete pronaći mapu Sysnative u mapi C: Windows. Čak i ako postavite Opcije mape za prikaz skrivenih i sustavnih mapa. To je zato što je Windows File Explorer 64-bitni program kada se pokreće u 64-bitnom sustavu Windows i Sysnative mapa je vidljiva i dostupna samo iz 32-bitnih programa.
Ukratko:
- System32 mape sadrže 64-bitne DLL datoteke.
- SysWOW64 sadrži 32-bitne DLL datoteke, a 32-bitni programi automatski se preusmjeravaju u ovu mapu
- Sysnative je mapa preusmjeravanja koja 32-bitnim programima omogućuje nazivanje 64-bitnih DLL-ova.
Dodatno čitanje: MSDN.