Cartella sysnative in Windows 64-bit spiegata
Con il rilascio di Windows 7 di 64-bit, è stata introdotta una piccola modifica nella normale allocazione delle cartelle nella directory di Windows. Due nuove cartelle sono incluse nell'edizione a 64 bit di Windows 7, Windows 8 e Windows 10. Lo sono Sysnative e SysWOW64 cartelle. Questo è solo in Windows a 64 bit. Se si esegue un Windows a 32 bit su un computer a 64 bit, non verranno visualizzati. Né li vedrai quando esegui Windows a 32 bit su un computer a 32 bit.
C'è un'altra cartella al di fuori della directory di Windows, e viene chiamata Programmi (x86). Siamo abituati al nome della cartella Program Files che ospita gli eseguibili dei nostri programmi. Nei sistemi a 64 bit, i programmi a 64 bit vengono archiviati nella cartella Programmi mentre i programmi a 32 bit sono contenuti in Programmi (x86). Tuttavia, Windows utilizza qualcosa come un'emulazione per l'esecuzione di programmi a 32 bit su un computer a 64 bit. E quindi, c'è bisogno di sapere e capire quali sono le cartelle di sistema sotto Windows (64 bit) in modo da sapere come raggiungere il file che si desidera.
A differenza delle macchine a 32 bit, dove le DLL a 32 bit sono archiviate nel Cartella System32, la versione a 64 bit di Windows memorizza le DLL relative a 64 bit nella cartella System32. Questo è per facilitare gli scopi di programmazione e per garantire la retrocompatibilità. Cioè, se un programma a 64 bit si riferisce a System32 nel suo codice, otterrà automaticamente la DLL a 64 bit quando viene chiamata. Questo aiuta gli sviluppatori in quanto non devono modificare il codice nei loro programmi per Windows a 64 bit.
In breve, Windows ha spostato tutte le DLL a 32 bit dalla cartella System32 nella directory di Windows in un'altra cartella in modo che i programmi precedenti non debbano essere ricodificati per ottenere le DLL appropriate anche quando si utilizzano le API, dopo l'aggiornamento a 64 bit. Il problema si verifica quando un'applicazione a 32 bit tenta di accedere alla cartella System32. In questo caso, il programma si bloccherà poiché non viene scritto per gestire le DLL a 64 bit.
Cartella SysWOW64 in Windows a 64 bit
Tutte le DLL a 32 bit sono state spostate nel nuovo Cartella SysWOW64 nella versione a 64 bit di Windows 7, Windows 8 e Windows 10, quindi quando i programmi a 32 bit chiamano le DLL a 32 bit, devono raggiungere la cartella SysWOW64.
È possibile che gli sviluppatori debbano analizzare i programmi e le applicazioni per indirizzare le funzioni DLL nella cartella SysWOW64. Ma Microsoft si è già occupato di questo. Se è un programma a 32 bit che sta chiamando C: \ Windows \ System32, un emulatore reindirizzerà il percorso a C: \ Windows \ SysWOW64. Cioè, per eseguire programmi a 32 bit in Windows 64-bit, viene utilizzato un emulatore, in modo che ci sia una corretta compatibilità con le versioni precedenti e per evitare errori durante la chiamata ai file DLL.Cartella Sysnative in Windows a 64 bit
Ci possono essere casi in cui un programma o un'applicazione a 32 bit potrebbe richiedere una DLL a 64 bit. In tal caso, dovrai utilizzare la cartella di reindirizzamento Sysnative. È possibile considerare SysNative come una cartella virtuale e un alias che punta alla cartella System32. Non esiste fisicamente sul tuo sistema, in quanto tale. Quindi, se il tuo programma a 32 bit ha bisogno di accedere a una DLL a 64 bit, non utilizzare C: \ Windows \ System32 perché l'emulatore di programma a 32 bit lo porterà alla cartella DLL a 32 bit denominata SysWOW64. Invece, usa C: \ Windows \ SysNative come il percorso del programma DLL. L'uso di Sysnative nel percorso lo reindirizzerà alla cartella System32 anziché alla cartella SysWOW64.
Se apri File Windows Explorer, non troverai la cartella Sysnative in C: \ Windows. Anche se imposti Opzioni cartella per mostrare le cartelle nascoste e di sistema. Questo perché, Windows File Explorer è un programma a 64 bit quando è in esecuzione su Windows a 64 bit e la cartella Sysnative è visibile e accessibile solo dai programmi a 32 bit.
Per riassumere:
- Le cartelle System32 contengono file DLL a 64 bit.
- SysWOW64 contiene file DLL a 32 bit e i programmi a 32 bit vengono reindirizzati automaticamente a questa cartella
- Sysnative è una cartella di reindirizzamento che consente ai programmi a 32 bit di chiamare DLL a 64 bit.
Letture aggiuntive: MSDN.
Vuoi sapere la differenza tra le cartelle System32 e SysWOW64?