Я использую 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-битных процессов по умолчанию.
источник
Ответы:
Проблема заключается в перенаправлении папок. Если 32-битная программа пытается получить доступ к
%windir%\System32
папке, она будет незаметно перенаправлена в%windir%\SysWOW64
каталог, это для совместимости приложений с 32/64 битами.Все файлы в System32 являются 64-битными, однако, если программа была написана неправильно, они, возможно, жестко закодировали System32 в своей программе при поиске DLL. Чтобы предотвратить случайные сбои программы от неправильно написанных программ, Microsoft делает это перенаправление.
Если вам нужен доступ к папке System32, а не к папке SysWOW64, перейдите в «скрытую» папку,
%windir%\sysnative
которая приведет вас в «настоящую»System32
папку, и вы сможете просматривать ее как обычно.источник
%windir%
переменная окружения, вы можете ввести ее так же, как в Windows, и она будет работать в 99% случаевC:\Windows
WOW64 (Windows на Windows 64bit) использует различные технологии / методы для поддержки 32-битных приложений. Среди них редиректоры папок и реестра.
Центр разработки Windows: рабочий стол с 32-разрядными приложениями
источник