Redirecteur du système de fichiers
Le répertoire %windir%\System32 est réservé aux applications 64 bits sur Windows 64 bits. La plupart des noms de fichiers DLL n’ont pas été modifiés lorsque les versions 64 bits des DLL ont été créées, de sorte que les versions 32 bits des DLL sont stockées dans un autre répertoire. WOW64 masque cette différence à l’aide d’un redirecteur de système de fichiers.
Dans la plupart des cas, chaque fois qu’une application 32 bits tente d’accéder à %windir%\System32, %windir%\lastgood\system32 ou %windir%\regedit.exe, l’accès est redirigé vers un chemin spécifique à l’architecture.
Notes
Ces chemins d’accès sont fournis à titre de référence uniquement. À des fins de compatibilité, les applications ne doivent pas utiliser ces chemins directement. Au lieu de cela, ils doivent appeler les API décrites ci-dessous.
Chemin d’accès d’origine | Chemin d’accès redirigé pour les processus x86 32 bits | Chemin d’accès redirigé pour les processus ARM 32 bits |
---|---|---|
%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 |
Si l’accès entraîne l’affichage de l’invite UAC par le système, la redirection ne se produit pas. Au lieu de cela, la version 64 bits du fichier demandé est lancée. Pour éviter ce problème, spécifiez le répertoire SysWOW64 pour éviter la redirection et garantir l’accès à la version 32 bits du fichier, ou exécutez l’application 32 bits avec des privilèges d’administrateur afin que l’invite UAC ne s’affiche pas.
Windows Server 2003 et Windows XP : La UAC n’est pas prise en charge.
Certains sous-répertoires sont exemptés de la redirection. L’accès à ces sous-répertoires n’est pas redirigé vers %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 et Windows XP : %windir%\system32\driverstore est redirigé.
Pour récupérer le nom du répertoire système 32 bits, les applications 64 bits doivent utiliser la fonction GetSystemWow64Directory2 (Windows 10, version 1511) ou la fonction GetSystemWow64Directory.
Les applications doivent utiliser la fonction SHGetKnownFolderPath pour déterminer le nom du répertoire %ProgramFiles%.
Windows Server 2003 et Windows XP : Les applications doivent utiliser la fonction SHGetSpecialFolderPath pour déterminer le nom du répertoire %ProgramFiles%.
Les applications peuvent contrôler le redirecteur du système de fichiers WOW64 à l’aide des fonctions Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirection et Wow64RevertWow64FsRedirection . La désactivation de la redirection du système de fichiers affecte toutes les opérations de fichier effectuées par le thread appelant. Elle doit donc être désactivée uniquement si nécessaire pour un seul appel CreateFile et réactivée immédiatement après le retour de la fonction. La désactivation de la redirection du système de fichiers pendant des périodes plus longues peut empêcher les applications 32 bits de charger les DLL système, ce qui entraîne l’échec des applications.
Les applications 32 bits peuvent accéder au répertoire système natif en remplaçant %windir%\Sysnative par %windir%\System32. WOW64 reconnaît Sysnative comme un alias spécial utilisé pour indiquer que le système de fichiers ne doit pas rediriger l’accès. Ce mécanisme est flexible et facile à utiliser. Par conséquent, il est recommandé de contourner la redirection du système de fichiers. Notez que les applications 64 bits ne peuvent pas utiliser l’alias Sysnative, car il s’agit d’un répertoire virtuel et non réel.
Windows Server 2003 et Windows XP : L’alias Sysnative a été ajouté à partir de Windows Vista.