10

Я использую Windows 8 Enterprise x64. Я вошел в систему, используя учетную запись из группы администраторов. Когда я открываю Windows Explorer или командную строку, я вижу файл 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

Но если я открою диалоговое окно "Открыть файл" из браузера Chrome, Visual Studio или некоторых других приложений (все они являются 32-разрядными приложениями) и перейду к папке C:\Windows\system32 то такого файла не будет (фильтр настроен на отображение всех файлы). И если я вызываю пункт контекстного меню "Открыть командное окно здесь", используя Shift+RightClick в диалоговом окне "Открыть файл", и набираю dir это подтверждает, что такого файла нет:

Диалог открытия файла


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

Этот эффект не характерен для cdd.dll , многие другие файлы также отличаются. Мне сказали, что это эффект виртуализации файловой системы , о которой я очень мало знаю.

Не могли бы вы объяснить или дать мне ссылку, которая объясняет, как это на самом деле работает? Есть ли на самом деле несколько разных экземпляров папки System32 . Каково их физическое расположение на диске? Можно ли получить доступ из 32-разрядных файлов процессов в папке System32 отличной от той, которая показана для 32-разрядных процессов по умолчанию.

2 ответа2

11

Проблема заключается в перенаправлении папок. Если 32-разрядная программа пытается получить доступ к папке %windir%\System32 она будет незаметно перенаправлена в каталог %windir%\SysWOW64 , это для совместимости приложений с 32/64 битами.

Все файлы в System32 являются 64-битными, однако, если программа была написана неправильно, они, возможно, жестко закодировали System32 в своей программе при поиске DLL. Чтобы предотвратить случайные сбои программы от неправильно написанных программ, Microsoft делает это перенаправление.

Если вам нужен доступ к папке System32, а не к папке SysWOW64, перейдите в "скрытую" папку %windir%\sysnative которая приведет вас в "настоящую" папку System32 и вы сможете просматривать ее как обычно.

4

WOW64 (Windows на Windows 64bit) использует различные технологии / методы для поддержки 32-битных приложений. Среди них редиректоры папок и реестра.

Центр разработки Windows: рабочий стол с 32-разрядными приложениями

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .