Mengapa berbagai proses melihat contoh berbeda dari folder System32?

10

Saya menjalankan Windows 8 Enterprise x64. Saya masuk menggunakan akun dari grup Administrators. Ketika saya membuka Windows Explorer atau prompt perintah, maka saya dapat melihat 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

Tetapi jika saya membuka dialog Open File dari browser Chrome, Visual Studio atau beberapa aplikasi lain (semuanya adalah aplikasi 32-bit) dan menavigasi ke C:\Windows\system32sana maka tidak ada file seperti itu (filter diatur untuk menampilkan Semua File). Dan jika saya memanggil item menu konteks "Buka perintah di sini" menggunakan Shift + RightClick dalam dialog Open File dan ketik diritu mengkonfirmasi bahwa tidak ada file seperti itu:

Buka File Dialog


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

Efek ini tidak spesifik untuk cdd.dll, banyak file lain juga berbeda. Saya telah diberitahu bahwa ini adalah efek dari virtualisasi sistem file , yang saya tahu sedikit tentang.

Bisakah Anda jelaskan atau beri saya referensi yang menjelaskan bagaimana ini sebenarnya bekerja? Apakah sebenarnya ada beberapa contoh System32folder yang berbeda. Apa lokasi fisik mereka pada disk? Apakah mungkin untuk mengakses dari file proses 32-bit di System32folder yang berbeda dari yang ditunjukkan ke proses 32-bit secara default.

Vladimir Reshetnikov
sumber
Apakah mereka muncul di aplikasi x64? Saya punya firasat bahwa Windows "menyembunyikan" driver 64-bit (cdd.dll adalah driver tampilan) dari aplikasi 32-bit.
Nathan C
Ya, semua aplikasi 64-bit yang memungkinkan untuk menelusuri sistem file (mis. Memiliki dialog Open File) menampilkan file yang sama dengan Windows Explorer.
Vladimir Reshetnikov
@VladimirReshetnikov Apakah ada sesuatu yang Anda masih belum mengerti, Anda mengedit pertanyaan Anda tetapi tidak memasukkan rincian lebih lanjut, Anda juga tidak menerima jawaban. Apakah Anda memerlukan hal lain yang diklarifikasi?
Scott Chamberlain
@ScottChamberlain Saya baru saja mengedit tag. Jawaban Anda sangat bagus. Terima kasih!
Vladimir Reshetnikov

Jawaban:

11

Masalahnya adalah pengalihan folder , Jika program 32 bit mencoba mengakses %windir%\System32folder itu akan diarahkan ke %windir%\SysWOW64direktori tanpa terlihat, ini untuk kompatibilitas aplikasi 32/64 bit.

Semua file di System32 adalah 64 bit, namun jika suatu program salah tulis, mereka mungkin telah melakukan hardcode pada System32 untuk program mereka ketika mencari DLL. Untuk mencegah crash program acak dari program yang ditulis secara tidak benar, Microsoft melakukan redirect.

Jika Anda perlu mengakses folder System32 dan bukan folder SysWOW64 menavigasi ke folder "tersembunyi" %windir%\sysnativeyang akan membawa Anda ke System32folder "nyata" dan Anda dapat menelusuri folder seperti biasa.

Scott Chamberlain
sumber
%windir%adalah variabel lingkungan, Anda dapat mengetikkannya seperti itu di windows dan akan berfungsi, 99% dari waktu yang diwakilinyaC:\Windows
Scott Chamberlain
4

WOW64 (Windows pada Windows 64bit) menggunakan berbagai teknologi / teknik untuk mendukung aplikasi 32bit. Diantaranya adalah pengalih Folder dan Registry.

Windows Dev Center: Desktop Menjalankan Aplikasi 32-bit

Brian
sumber
Dan lebih khusus lagi, informasi tentang Profil Kompatibilitas Aplikasi yang membuat keajaiban ini terjadi.
David Hoelzer