Korzystam z systemu Windows 8 Enterprise x64. Zalogowałem się przy użyciu konta z grupy Administratorzy. Po otwarciu Eksploratora Windows lub wiersza polecenia mogę zobaczyć plik cdd.dll
:
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
Ale jeśli otworzę okno dialogowe Otwórz plik w przeglądarce Chrome, Visual Studio lub niektórych innych aplikacjach (wszystkie są aplikacjami 32-bitowymi) i przejdę do C:\Windows\system32
tego, nie ma takiego pliku (filtr jest ustawiony na wyświetlanie wszystkich plików). A jeśli wywołam element menu kontekstowego „Otwórz okno polecenia tutaj” za pomocą Shift + RightClick w oknie dialogowym Otwórz plik i wpisz, dir
że potwierdzi, że nie ma takiego pliku:
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
Ten efekt nie jest specyficzny cdd.dll
, wiele innych plików również się różni. Powiedziano mi, że jest to efekt wirtualizacji systemu plików , o którym niewiele wiem.
Czy możesz wyjaśnić lub podać referencje wyjaśniające, jak to naprawdę działa? Czy faktycznie istnieje kilka różnych instancji System32
folderu. Jaka jest ich fizyczna lokalizacja na dysku? Czy jest możliwy dostęp z 32-bitowych plików procesowych w innym System32
folderze niż pokazany domyślnie do procesów 32-bitowych?
źródło
Odpowiedzi:
Problemem jest przekierowanie folderu , jeśli 32-bitowy program spróbuje uzyskać dostęp do
%windir%\System32
folderu, zostanie niewidocznie przekierowany do%windir%\SysWOW64
katalogu, jest to zgodne z 32/64-bitową kompatybilnością aplikacji.Wszystkie pliki w System32 są 64-bitowe, jednak jeśli program został niepoprawnie napisany, być może na stałe wpisał System32 do swojego programu, gdy szuka DLL. Aby zapobiec przypadkowym awariom programów z niepoprawnie napisanych programów, Microsoft to przekierowuje.
Jeśli potrzebujesz dostępu do folderu System32, a nie do folderu SysWOW64, przejdź do folderu „ukrytego”,
%windir%\sysnative
który przeniesie Cię doSystem32
folderu „prawdziwego” i możesz przeglądać folder w normalny sposób.źródło
%windir%
jest zmienną środowiskową, można ją wpisać dokładnie tak, jak w systemie Windows, i zadziała, 99% czasu reprezentujeC:\Windows
WOW64 (Windows na Windows 64bit) wykorzystuje różne technologie / techniki do obsługi aplikacji 32bit. Wśród nich są przekierowania folderów i rejestru.
Windows Dev Center: Pulpit z 32-bitowymi aplikacjami
źródło