Средство перенаправления файловой системы
Каталог %windir%\System32 зарезервирован для 64-разрядных приложений в 64-разрядной версии Windows. Большинство имен dll-файлов не были изменены при создании 64-разрядных версий БИБЛИОТЕК DLL, поэтому 32-разрядные версии библиотек DLL хранятся в другом каталоге. WOW64 скрывает это различие с помощью перенаправителя файловой системы.
В большинстве случаев, когда 32-разрядное приложение пытается получить доступ к %windir%\System32, %windir%\lastgood\system32, or %windir%\regedit.exe, доступ перенаправляется на путь, зависящий от архитектуры.
Заметка
Эти пути предоставляются только для ссылок. Для совместимости приложения не должны использовать эти пути напрямую. Вместо этого они должны вызывать API, описанные ниже.
Исходный путь | Перенаправленный путь для 32-разрядных процессов x86 | Перенаправленный путь для 32-разрядных процессов ARM |
---|---|---|
%windir%\System32 | %windir%\SysWOW64 | %windir%\SysArm32 |
%windir%\lastgood\system32 | %windir%\lastgood\SysWOW64 | %windir%\lastgood\SysArm32 |
%windir%\regedit.exe | %windir%\SysWOW64\regedit.exe | %windir%\ SysArm32\regedit.exe |
Если доступ приводит к отображению запроса UAC, перенаправление не происходит. Вместо этого запускается 64-разрядная версия запрошенного файла. Чтобы предотвратить эту проблему, укажите каталог SysWOW64, чтобы избежать перенаправления и обеспечить доступ к 32-разрядной версии файла, или запустите 32-разрядное приложение с правами администратора, чтобы запрос UAC не отображался.
Windows Server 2003 и Windows XP: UAC не поддерживается.
Некоторые вложенные каталоги исключены из перенаправления. Доступ к этим подкаталогам не перенаправляется на %windir%\SysWOW64:
- %windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: %windir%\system32\driverstore перенаправляется.
Чтобы получить имя 32-разрядного системного каталога, 64-разрядные приложения должны использовать функцию GetSystemWow64Directory2 (Windows 10 версии 1511) или функцию GetSystemWow64Directory.
Приложения должны использовать функци ю SHGetKnownFolderPath, чтобы определить имя каталога %ProgramFiles%.
Windows Server 2003 и Windows XP: приложения должны использовать функцию SHGetSpecialFolderPath для определения имени каталога %ProgramFiles%.
Приложения могут управлять перенаправлением файловой системы WOW64 с помощью Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirectionи функции Wow64RevertWow64FsRedirection. Отключение перенаправления файловой системы влияет на все операции с файлами, выполняемые вызывающим потоком, поэтому его следует отключить только при необходимости для одного вызова CreateFile и повторного включения сразу после возврата функции. Отключение перенаправления файловой системы в течение более длительных периодов может препятствовать загрузке 32-разрядных приложений системных БИБЛИОТЕК DLL, что приводит к сбою приложений.
32-разрядные приложения могут получить доступ к собственному системному каталогу, заменив %windir%\Sysnative для %windir%\System32. WOW64 распознает Sysnative как специальный псевдоним, используемый для указания, что файловая система не должна перенаправлять доступ. Этот механизм является гибким и простым в использовании, поэтому рекомендуется использовать механизм обхода перенаправления файловой системы. Обратите внимание, что 64-разрядные приложения не могут использовать псевдоним Sysnative, так как это виртуальный каталог не является реальным.
Windows Server 2003 и Windows XP: псевдоним sysnative был добавлен начиная с Windows Vista.