Reindirizzamento file system

La directory %windir%\System32 è riservata alle applicazioni a 64 bit in Windows a 64 bit. La maggior parte dei nomi di file DLL non è stata modificata quando sono state create versioni a 64 bit delle DLL, quindi le versioni a 32 bit delle DLL vengono archiviate in una directory diversa. WOW64 nasconde questa differenza usando un reindirizzamento del file system.

Nella maggior parte dei casi, ogni volta che un'applicazione a 32 bit tenta di accedere a %windir%\System32, %windir%\lastgood\system32 o %windir%\regedit.exe, l'accesso viene reindirizzato a un percorso specifico dell'architettura.

Nota

Questi percorsi vengono forniti solo per riferimento. Per la compatibilità, le applicazioni non devono usare direttamente questi percorsi. Devono invece chiamare le API descritte di seguito.

 

Percorso originale Percorso reindirizzato per processi x86 a 32 bit Percorso reindirizzato per processi ARM a 32 bit
%windir%\System32 %windir%\SysWOW64 %windir%\SysArm32
%windir%\lastgood\system32 %windir%\lastgood\SysWOW64 %windir%\lastgood\SysArm32
%windir%\regedit.exe %windir%\SysWOW64\regedit.exe %windir%\ SysArm32\regedit.exe

 

Se l'accesso causa la visualizzazione del prompt dell'interfaccia utente, il reindirizzamento non si verifica. Viene invece avviata la versione a 64 bit del file richiesto. Per evitare questo problema, specificare la directory SysWOW64 per evitare il reindirizzamento e garantire l'accesso alla versione a 32 bit del file oppure eseguire l'applicazione a 32 bit con privilegi di amministratore in modo che il prompt dell'interfaccia utente non venga visualizzato.

Windows Server 2003 e Windows XP: L'interfaccia utente non è supportata.

Alcune sottodirectory sono escluse dal reindirizzamento. L'accesso a queste sottodirectory non viene reindirizzato a %windir%\SysWOW64:

%windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: %windir%\system32\driverstore viene reindirizzato.

Per recuperare il nome della directory di sistema a 32 bit, le applicazioni a 64 bit devono usare la funzione GetSystemWow64Directory2 (Windows 10, versione 1511) o la funzione GetSystemWow64Directory.

Le applicazioni devono usare la funzione SHGetKnownFolderPath per determinare il nome della directory %ProgramFiles%.

Windows Server 2003 e Windows XP: Le applicazioni devono usare la funzione SHGetSpecialFolderPath per determinare il nome della directory %ProgramFiles%.

Le applicazioni possono controllare il reindirizzamento del file system WOW64 usando le funzioni Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirection e Wow64RevertWow64FsRedirection . La disabilitazione del reindirizzamento del file system influisce su tutte le operazioni di file eseguite dal thread chiamante, quindi deve essere disabilitata solo quando necessario per una singola chiamata CreateFile e riattivata immediatamente dopo la restituzione della funzione. La disabilitazione del reindirizzamento del file system per periodi più lunghi può impedire alle applicazioni a 32 bit di caricare le DLL del sistema, causando l'esito negativo delle applicazioni.

Le applicazioni a 32 bit possono accedere alla directory del sistema nativa sostituendo %windir%\Sysnative per %windir%\System32. WOW64 riconosce Sysnative come alias speciale usato per indicare che il file system non deve reindirizzare l'accesso. Questo meccanismo è flessibile e facile da usare, pertanto è il meccanismo consigliato per ignorare il reindirizzamento del file system. Si noti che le applicazioni a 64 bit non possono usare l'alias Sysnative perché è una directory virtuale non una vera e propria.

Windows Server 2003 e Windows XP: L'alias Sysnative è stato aggiunto a partire da Windows Vista.