Soddisfare
Perché Windows 11 archivia i file a 64 bit in System32 e quelli a 32 bit in SysWOW64
Perché System32 contiene file a 64 bit
Come Windows 11 reindirizza le applicazioni a 32 bit verso SysWOW64
Utilizzo della directory virtuale Sysnative
Sei cartelle di System32 sono escluse dal reindirizzamento WOW64
SysArm32 viene rimosso da Windows 11 su Arm
La compatibilità ha la precedenza su una denominazione più chiara
MS spiega perché Windows 11 archivia i file a 64 bit in System32 e quelli a 32 bit in SysWOW64
Tempo: Oct, 20, 2026

Perché Windows 11 archivia i file a 64 bit in System32 e quelli a 32 bit in SysWOW64

Windows 11's System32 contains 64-bit files, while SysWOW64 contains 32-bit files

MS non offre un’edizione a 32 bit di Windows 11, ma il sistema operativo deve comunque supportare decenni di applicazioni a 32 bit. La sua soluzione si basa su due directory di sistema: System32 per i file nativi a 64 bit e SysWOW64 per i file a 32 bit. Il redirector del file system WOW64 indirizza automaticamente le applicazioni a 32 bit verso SysWOW64 quando tentano di accedere a System32.

Su un PC con Windows 11 26H2, entrambe le directory contengono un file denominato kernel32.dll. I file hanno dimensioni diverse perché uno è progettato per le applicazioni a 64 bit e l’altro per il software a 32 bit.

Kernel32.dll appears in both System32 and SysWOW64 on Windows 11 26H2, but the 64-bit and 32-bit versions have different sizes

Se MS potesse interrompere il supporto per il software a 32 bit, come ha fatto Apple, Windows potrebbe non avere più bisogno di questa architettura di compatibilità. Tuttavia, l’elevato numero di applicazioni a 32 bit ancora esistenti rende questa transizione notevolmente più difficile.

Perché System32 contiene file a 64 bit

Durante l’era di Windows a 16 bit, i file di sistema venivano archiviati in C:\Windows\System. Con l’arrivo di Windows a 32 bit, MS introdusse C:\Windows\System32 per i file a 32 bit, il che spiega il nome della directory.

Quando fu sviluppato Windows a 64 bit, molte applicazioni avevano già il percorso System32 codificato direttamente nel codice, anziché ottenerlo tramite la funzione GetSystemDirectory. Raymond Chen, veterano di MS, ha spiegato che, dopo essere state ricompilate come programmi a 64 bit, tali applicazioni continuavano a cercare in System32, ma a quel punto si aspettavano di trovarvi file a 64 bit.

I file batch crearono un problema di compatibilità simile. Se System32 avesse continuato a contenere strumenti a 32 bit, uno script che eseguiva System32\reg.exe avrebbe modificato la visualizzazione del Registro di sistema a 32 bit anziché quella prevista a 64 bit.

MS decise quindi che System32 avrebbe contenuto file corrispondenti all’architettura nativa del sistema operativo. La documentazione relativa al redirector del file system specifica che la directory %windir%\System32 è riservata alle applicazioni a 64 bit nelle versioni di Windows a 64 bit.

Anche la maggior parte dei nomi delle DLL rimase invariata quando MS ne creò le versioni a 64 bit. Di conseguenza, kernel32.dll—il cui nome segue le vecchie convenzioni di denominazione di MS-DOS—si chiama kernel32.dll in entrambe le posizioni. Le versioni a 32 bit necessitavano quindi di una directory separata.

Chen ha osservato che il “32” di System32 è ormai semplicemente parte del nome, anziché una descrizione accurata del suo contenuto. Ha suggerito che, in una progettazione ideale, la cartella avrebbe potuto chiamarsi SysExec, poiché fornisce i file appropriati per il programma in esecuzione.

WOW64 significa “Windows a 32 bit su Windows a 64 bit”. È il livello di compatibilità di MS per le applicazioni a 32 bit. Il “64” di SysWOW64 si riferisce al sistema operativo host, anche se la directory stessa contiene file a 32 bit. Paradossalmente, le applicazioni a 64 bit non utilizzano la cartella di sistema con “64” nel nome.

Come Windows 11 reindirizza le applicazioni a 32 bit verso SysWOW64

Un processo a 32 bit non può caricare una DLL a 64 bit per eseguirla, così come un processo a 64 bit non può caricare una DLL a 32 bit. Senza il reindirizzamento, un’applicazione a 32 bit che richiede kernel32.dll da System32 riceverebbe un file incompatibile.

Su Windows x64, WOW64 reindirizza in modo trasparente le richieste pertinenti del file system ogni volta che un’applicazione a 32 bit richiede un percorso System32 protetto. In genere, l’applicazione non si accorge che il percorso è stato modificato.

Questo comportamento può essere verificato aprendo il Prompt dei comandi a 32 bit da C:\Windows\SysWOW64\cmd.exe. In quella finestra, echo %PROCESSOR_ARCHITECTURE% restituisce x86, mentre il Prompt dei comandi standard a 64 bit restituisce AMD64. Eseguendo dir C:\Windows\System32\kernel32.dll in entrambe le finestre vengono visualizzate dimensioni del file diverse, nonostante sia stato immesso lo stesso percorso, perché il processo a 32 bit viene reindirizzato alla copia presente in SysWOW64.

The 32-bit Command Prompt reports x86 and accesses the SysWOW64 version of kernel32.dll when System32 is requestedTask Manager identifies which Command Prompt is running as a 32-bit process

Persino Matt Pietrek, all’epoca membro del team Visual Studio di MS, si imbatté in questo comportamento. In un articolo di MSDN Magazine del 2006, descrisse come aveva elencato kernel32.dll in entrambe le directory da un Prompt dei comandi a 32 bit, rimanendo inizialmente perplesso quando i risultati apparvero identici.

WOW64 va oltre il reindirizzamento del file system. Tramite il redirector del Registro di sistema, offre alle applicazioni a 32 bit una visualizzazione separata del Registro in HKEY_LOCAL_MACHINE\Software\Wow6432Node. Inoltre, imposta la loro variabile di ambiente %ProgramFiles% su Program Files (x86).

32-bit applications receive a separate registry view under WOW6432Node on Windows 11

MS segnala un’eccezione insolita relativa al Controllo dell’account utente. Se l’apertura di un file reindirizzato attiva una richiesta UAC, il reindirizzamento non avviene e Windows avvia invece la versione a 64 bit. Quando opportuno, gli sviluppatori dovrebbero quindi specificare il percorso SysWOW64 oppure eseguire l’applicazione a 32 bit come amministratore.

Utilizzo della directory virtuale Sysnative

Sysnative è una directory virtuale disponibile esclusivamente per le applicazioni a 32 bit. Non è fisicamente presente in C:\Windows e le applicazioni a 64 bit non possono accedervi. L’inserimento di C:\Windows\Sysnative nella barra degli indirizzi di Esplora file a 64 bit genera un errore, mentre dir C:\Windows\Sysnative\cmd.exe funziona da un Prompt dei comandi a 32 bit.

Sysnative is available to 32-bit applications but cannot be accessed through 64-bit File Explorer

Gli sviluppatori possono disattivare il reindirizzamento richiamando la funzione Wow64DisableWow64FsRedirection, ma questa operazione influisce su tutte le operazioni sui file del thread corrente. MS avverte che la disattivazione del reindirizzamento del file system può causare errori nel caricamento delle DLL.

Chen ha descritto Sysnative come “una soluzione locale a un problema locale”. In precedenza aveva consigliato agli sviluppatori di non contrastare l’emulatore, raccomandando che un programma di installazione a 32 bit avviasse un programma di installazione a 64 bit quando erano necessarie operazioni native a 64 bit. Molti problemi di compatibilità sorgono quando un’applicazione a 32 bit tenta di comportarsi come un processo a 64 bit.

Sei cartelle di System32 sono escluse dal reindirizzamento WOW64

MS identifica sei sottodirectory di System32 alle quali le applicazioni a 32 bit possono accedere senza essere reindirizzate. L’elenco delle esclusioni è cambiato nel tempo. Ad esempio, driverstore veniva reindirizzata in Windows Vista, Windows XP, Windows Server 2003 e Windows Server 2008.

MS non spiega il motivo di ogni esclusione. Tuttavia, alcune di queste directory contengono dati condivisi ai quali sia le applicazioni a 32 bit sia quelle a 64 bit devono accedere in modo coerente, come il file hosts in drivers\etc.

SysArm32 viene rimosso da Windows 11 su Arm

Sui computer basati su Arm, come i portatili Snapdragon X, anche le applicazioni x86 a 32 bit utilizzano SysWOW64. Storicamente, le applicazioni Arm a 32 bit venivano reindirizzate verso una terza directory denominata SysArm32.

Sui sistemi Arm64, WOW64 traduce il codice x86 tramite un emulatore denominato xtajit.dll. In confronto, i processori x64 eseguono nativamente il codice a 32 bit, con Wow64Cpu.dll che gestisce il passaggio tra le modalità di esecuzione, secondo la documentazione tecnica di MS.

La documentazione MS per gli sviluppatori Arm ora specifica che i PC Arm non supportano più le applicazioni Arm a 32 bit. Anche i file binari di sistema precedentemente archiviati nella directory SysArm32 sono in fase di rimozione. Le applicazioni x86 standard, sia a 32 sia a 64 bit, continuano a funzionare tramite l’emulazione Prism, che lo scorso anno ha ricevuto il supporto per AVX e AVX2.

La compatibilità ha la precedenza su una denominazione più chiara

MS avrebbe potuto rinominare System32 due decenni fa, ma così facendo avrebbe compromesso il funzionamento di molte applicazioni esistenti. L’azienda ha invece creato un redirector, un alias virtuale e una serie di esclusioni attorno al nome ormai consolidato della directory. Ciò riflette lo stesso approccio incentrato sulla compatibilità che ha preservato elementi come il gestore heap di Windows 95 per i software meno recenti.

Non tutte le applicazioni sono sopravvissute alla transizione verso Windows a 64 bit, con 3D Pinball come esempio particolarmente noto. Sebbene un nome come SysExec sarebbe stato più chiaro, il nome obsoleto di una directory è meno dannoso di malfunzionamenti diffusi di applicazioni e programmi di installazione.

2
Live Chat