Quelle est la différence entre les dossiers «System32» et «SysWOW64» dans Windows?

Sur les versions 64 bits de Windows, vous disposez de deux dossiers Program Files distincts. Mais ça ne s'arrête pas là. Vous disposez également de deux répertoires système distincts dans lesquels les bibliothèques DLL et les exécutables sont stockés: System32 et SysWOW64. Malgré les noms, System32 est plein de fichiers 64 bits et SysWOW64 est plein de fichiers 32 bits. Alors qu'est-ce qui donne?

Qu'est-ce que System32?

CONNEXION: Que sont les fichiers DLL et pourquoi un fichier manque-t-il sur mon PC?

Le répertoire System32 contient des fichiers système Windows, à la fois des fichiers de bibliothèque .DLL utilisés par les programmes et des utilitaires de programme .EXE qui font partie de Windows. Alors que la plupart des fichiers que vous trouvez ici font partie du système d'exploitation Windows, les logiciels tiers installent parfois leurs propres fichiers DLL dans ce dossier également.

Les applications exécutées sur votre système peuvent être installées dans votre dossier Program Files ou ailleurs, mais elles chargent souvent des bibliothèques à l'échelle du système à partir du dossier System32.

Séparation des bibliothèques 32 bits et 64 bits

CONNEXION: Quelle est la différence entre les dossiers «Program Files (x86)» et «Program Files» dans Windows?

Sur une version 64 bits de Windows, vous disposez d'un dossier C: \ Program Files contenant les programmes 64 bits et leurs fichiers, et un dossier C: \ Program Files (x86) contenant les programmes 32 bits et leurs fichiers. Il est utile que ces fichiers soient séparés car les programmes 64 bits ont besoin de fichiers DLL 64 bits et les programmes 32 bits ont besoin de fichiers DLL 32 bits.

Si un programme 32 bits charge un fichier DLL dont il a besoin, trouve une version 64 bits et essaie de la charger, il plantera. En séparant les logiciels 64 bits et 32 ​​bits dans deux dossiers Program Files différents, Windows garantit qu'ils ne seront pas mélangés et ne causeront pas de problèmes.

Cependant, tous les fichiers DLL ne sont pas stockés dans Program Files. De nombreuses bibliothèques à l'échelle du système incluses avec Windows sont stockées dans C: \ System32, et certains programmes vident également leurs propres fichiers de bibliothèque ici. Ainsi, tout comme Windows a des dossiers Program Files distincts 32 bits et 64 bits, il a également des versions 32 bits et 64 bits distinctes du dossier System32.

System32 et SysWOW64

Sur un ordinateur 32 bits, tous les programmes 32 bits stockent leurs fichiers dans C: \ Program Files et l'emplacement de la bibliothèque à l'échelle du système est C: \ System32.

Sur un ordinateur 64 bits, les programmes 64 bits stockent leurs fichiers dans C: \ Program Files et le dossier C: \ Windows \ System32 à l'échelle du système contient des bibliothèques 64 bits. Les programmes 32 bits stockent leurs fichiers dans C: \ Program Files (x86) et le dossier à l'échelle du système est C: \ Windows \ SysWOW64.

C'est certainement contre-intuitif. Malgré le «32» dans le nom, le dossier System32 contient des bibliothèques 64 bits. Et, malgré le 64 dans le nom, le dossier SysWOW64 contient des bibliothèques 32 bits, au moins sur les versions 64 bits de Windows.

En général, vous n'aurez pas besoin de le savoir. Le système d'exploitation Windows et les programmes que vous utilisez placent automatiquement leurs fichiers au bon emplacement et utilisent le bon dossier. Cependant, si jamais vous avez besoin d'installer manuellement un fichier DLL au bon emplacement ou d'en trouver un (ce qui est très rare), vous devrez savoir lequel est lequel.

WOW64, expliqué

CONNEXION: Pourquoi la plupart des programmes sont-ils toujours 32 bits sur une version 64 bits de Windows?

La partie «WOW64» du nom ici fait référence au logiciel «Windows 32 bits sur Windows 64 bits» de Microsoft, qui fait partie du système d'exploitation. Cela permet à Windows d'exécuter des programmes 32 bits sur une version 64 bits de Windows. WoW64 redirige l'accès aux fichiers pour garantir le bon fonctionnement des programmes.

Par exemple, si vous installez un programme 32 bits sur une version 64 bits de Windows et qu'il essaie d'écrire dans le dossier C: \ Program Files, WoW64 le pointe vers C: \ Program Files (x86). Et, s'il veut accéder au dossier C: \ Windows \ System32, WoW64 le pointe vers C: \ Windows \ SysWOW64. Windows le fait à l'aide d'un redirecteur de système de fichiers.

Tout cela se produit automatiquement et de manière transparente en arrière-plan. Le programme n'a même pas besoin de savoir qu'il fonctionne sur un système d'exploitation 64 bits, ce qui permet aux anciens programmes 32 bits de s'exécuter sans modification sur les versions 64 bits de Windows. WOW64 redirige également l'accès au registre, garantissant qu'il existe des zones distinctes du registre pour les programmes 64 bits et 32 ​​bits.

Alors, pourquoi System32 64 bits et SysWOW64 32 bits?

Tout cela nous ramène à la question à un million de dollars: pourquoi le dossier «System32» est-il 64 bits et SysWOW64 32 bits?

La réponse semble être que de nombreuses applications 32 bits ont été codées en dur pour utiliser le répertoire C: \ Windows \ System32. Lorsque les développeurs ont recompilé ces applications pour les versions 64 bits de Windows, ils ont continué à utiliser le répertoire C: \ Windows \ System32.

Plutôt que de renommer le répertoire et de forcer les développeurs à passer au nouveau, cassant de nombreuses applications dans le processus, Microsoft a laissé «System32» comme répertoire de bibliothèque système standard. Ils ont créé un nouveau répertoire de bibliothèque pour les applications exécutées sous la couche WoW64, qu'ils ont nommé «SysWOW64». Quand on y pense de cette façon, le nom a plus de sens.

Oui, c'est un peu ridicule qu'un répertoire avec «32» dans le nom soit maintenant 64 bits. Peut-être que Microsoft aurait dû voir cela venir quand ils l'ont nommé C: \ Windows \ System32 dans les années 90. Mais, même si un schéma de dénomination plus simple serait bien, cela ne vaut pas la peine de casser un tas de programmes et de créer plus de travail pour les développeurs juste pour y arriver. Cela signifie que nous sommes bloqués avec System32 et SysWOW64 dans un avenir prévisible.