Perché processi diversi visualizzano istanze diverse della cartella System32?


10

Sto eseguendo Windows 8 Enterprise x64. Ho effettuato l'accesso utilizzando un account dal gruppo Administrators. Quando apro Esplora risorse o un prompt dei comandi, posso vedere il file 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

Ma se apro una finestra di dialogo Apri file dal browser Chrome, Visual Studio o alcune altre applicazioni (sono tutte app a 32 bit) e navigo fino a quando C:\Windows\system32non esiste tale file (il filtro è impostato per mostrare Tutti i file). E se invoco la voce di menu di scelta rapida "Apri finestra di comando qui" utilizzando Maiusc + tasto destro nella finestra di dialogo Apri file e digito, dirsi conferma che non esiste tale file:

Apri la finestra di dialogo File


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

Questo effetto non è specifico cdd.dll, molti altri file differiscono. Mi è stato detto che questo è un effetto della virtualizzazione del file system , di cui so ben poco.

Potresti spiegare o darmi un riferimento che spieghi come funziona effettivamente? Esistono effettivamente diverse istanze della System32cartella. Qual è la loro posizione fisica sul disco? È possibile accedere da file di processo a 32 bit in una System32cartella diversa da quella mostrata ai processi a 32 bit per impostazione predefinita.


Appaiono in qualche app x64? Ho la sensazione che Windows "nasconda" i driver a 64 bit (cdd.dll è un driver di visualizzazione) dalle app a 32 bit.
Nathan C,

Sì, tutte le app a 64 bit che consentono di esplorare il file system (ad es. Hanno una finestra di dialogo Apri file) mostrano gli stessi file di Esplora risorse.
Vladimir Reshetnikov,

@VladimirReshetnikov C'è qualcosa che ancora non capisci, hai modificato la tua domanda ma non hai incluso altri dettagli, inoltre non hai accettato nessuna delle risposte. Ti serve qualcos'altro da chiarire?
Scott Chamberlain,

@ScottChamberlain Ho appena modificato i tag. La tua risposta è molto buona. Grazie!
Vladimir Reshetnikov,

Risposte:


11

Il problema è il reindirizzamento delle cartelle . Se un programma a 32 bit tenta di accedere alla %windir%\System32cartella verrà reindirizzato in modo invisibile alla %windir%\SysWOW64directory, ciò è per la compatibilità delle applicazioni a 32/64 bit.

Tutti i file in System32 sono a 64 bit, tuttavia se un programma è stato scritto in modo errato potrebbero aver inserito il System32 nel loro programma durante la ricerca di una DLL. Per evitare arresti anomali del programma casuali da programmi scritti in modo errato Microsoft reindirizza.

Se devi accedere alla cartella System32 e non alla cartella SysWOW64, passa alla cartella "nascosta" %windir%\sysnativeche ti porterà alla System32cartella "reale" e puoi sfogliare la cartella come di consueto.


%windir%è una variabile d'ambiente, potresti digitarla proprio come quella in Windows e funzionerebbe, il 99% delle volte rappresentaC:\Windows
Scott Chamberlain

4

WOW64 (Windows su Windows a 64 bit) utilizza varie tecnologie / tecniche per supportare applicazioni a 32 bit. Tra questi vi sono i redirector di cartelle e registri.

Windows Dev Center: desktop con applicazioni a 32 bit


E più specificamente, informazioni sui profili di compatibilità delle applicazioni che è ciò che rende possibile questa magia.
David Hoelzer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.