Перенаправитель файловой системы

Каталог %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: ** 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.