Pourquoi différents processus voient différentes instances du dossier System32?

10

J'utilise Windows 8 Enterprise x64. Je me suis connecté avec un compte du groupe Administrateurs. Lorsque j'ouvre Windows Explorer ou une invite de commande, je peux voir le fichier cdd.dll:

Windows Explorer


C:\Windows\system32>dir cdd.dll
 Volume in drive C has no label.
 Volume Serial Number is ▨▨▨▨-▨▨▨▨

 Directory of C:\Windows\system32

07/25/2012  09:49 PM           199,680 cdd.dll

Mais si j'ouvre une boîte de dialogue Ouvrir un fichier à partir du navigateur Chrome, de Visual Studio ou d'autres applications (ce sont toutes des applications 32 bits) et que je navigue jusqu'à C:\Windows\system32, aucun fichier de ce type n'existe (le filtre est configuré pour afficher tous les fichiers). Et si j'appelle l'élément de menu contextuel "Ouvrir la fenêtre de commande ici" à l'aide de Maj + Clic droit dans la boîte de dialogue Ouvrir un fichier et que vous le tapez, dircela confirme qu'il n'existe aucun fichier de ce type:

Boîte de dialogue Ouvrir un fichier


C:\Windows\System32>dir cdd.dll
 Volume in drive C has no label.
 Volume Serial Number is ▨▨▨▨-▨▨▨▨

 Directory of C:\Windows\System32

File Not Found

Cet effet n'est pas spécifique à cdd.dll, de nombreux autres fichiers diffèrent également. On m'a dit qu'il s'agissait d'un effet de la virtualisation du système de fichiers , que je connais très peu.

Pourriez-vous s'il vous plaît expliquer ou me donner une référence qui explique comment cela fonctionne réellement? Existe-t-il en réalité plusieurs instances différentes du System32dossier? Quel est leur emplacement physique sur le disque? Est-il possible d'accéder à partir d'un fichier de processus 32 bits dans un System32dossier différent de celui indiqué aux processus 32 bits par défaut.

Vladimir Reshetnikov
la source
Apparaissent-ils dans des applications x64? J'ai l'impression que Windows "cache" les pilotes 64 bits (cdd.dll est un pilote d'affichage) d'applications 32 bits.
Nathan C
Oui, toutes les applications 64 bits qui permettent de parcourir le système de fichiers (par exemple, une boîte de dialogue Ouvrir un fichier) affichent les mêmes fichiers que l'Explorateur Windows.
Vladimir Reshetnikov
@VladimirReshetnikov Y a-t-il quelque chose que vous ne comprenez toujours pas, vous avez modifié votre question sans inclure plus de détails, vous n'avez également accepté aucune des réponses. Avez-vous besoin de quelque chose d'autre clarifié?
Scott Chamberlain
@ScottChamberlain Je viens de modifier les tags. Vous répondez est très bien. Merci!
Vladimir Reshetnikov

Réponses:

11

Le problème est la redirection de dossiers . Si un programme 32 bits tente d’accéder au %windir%\System32dossier, il sera redirigé de manière invisible vers le %windir%\SysWOW64répertoire. Il s’agit d’une compatibilité d’application 32/64 bits.

Tous les fichiers de System32 sont en 64 bits. Toutefois, si un programme a été écrit de manière incorrecte, ils peuvent avoir codé le System32 en code dans leur programme lors de la recherche d'une DLL. Pour éviter les plantages aléatoires de programmes provenant de programmes mal écrits, Microsoft effectue cette redirection.

Si vous devez accéder au dossier System32 et non au dossier SysWOW64, accédez au dossier "caché" %windir%\sysnativequi vous mènera au System32dossier "réel" et vous pourrez naviguer dans le dossier comme d'habitude.

Scott Chamberlain
la source
%windir%est une variable d'environnement, vous pouvez le saisir exactement comme ça dans Windows et cela fonctionnerait 99% du temps, cela représenteC:\Windows
Scott Chamberlain
4

WOW64 (Windows sur Windows 64 bits) utilise diverses technologies / techniques pour prendre en charge les applications 32 bits. Parmi ceux-ci se trouvent les redirecteurs de dossiers et de registres.

Centre de développement Windows: Bureau exécutant des applications 32 bits

Brian
la source
Et plus spécifiquement, des informations sur les profils de compatibilité des applications qui expliquent cette magie.
David Hoelzer