Перенаправитель файловой системы
Каталог %windir%\System32 зарезервирован для 64-разрядных приложений в 64-разрядной версии Windows. Большинство имен DLL-файлов не были изменены при создании 64-разрядных версий библиотек DLL, поэтому 32-разрядные версии библиотек DLL хранятся в другом каталоге. WOW64 скрывает эту разницу с помощью перенаправителя файловой системы.
В большинстве случаев, когда 32-разрядное приложение пытается получить доступ к %windir%\System32, %windir%\lastgood\system32 или %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: Контроль учетных записей не поддерживается.
Некоторые подкаталоги исключаются из перенаправления. Доступ к этим подкаталогам не перенаправляется в папку %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.