파일 시스템 리디렉션기

%windir%\System32 디렉터리가 64비트 Windows의 64비트 애플리케이션용으로 예약되어 있습니다. 64비트 버전의 DLL을 만들 때 대부분의 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비트 버전이 시작됩니다. 이 문제를 방지하려면 리디렉션을 방지하고 32비트 버전의 파일에 액세스하도록 SysWOW64 디렉터리를 지정하거나 UAC 프롬프트가 표시되지 않도록 관리자 권한으로 32비트 애플리케이션을 실행합니다.

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% 디렉터리 이름을 결정해야 합니다.

애플리케이션은 Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirectionWow64RevertWow64FsRedirection 함수를 사용하여 WOW64 파일 시스템 리디렉터를 제어할 수 있습니다. 파일 시스템 리디렉션을 사용하지 않도록 설정하면 호출 스레드에서 수행하는 모든 파일 작업에 영향을 주므로 단일 CreateFile 호출에 필요한 경우에만 사용하지 않도록 설정하고 함수가 반환된 직후 다시 사용하도록 설정해야 합니다. 파일 시스템 리디렉션을 더 오랫동안 사용하지 않도록 설정하면 32비트 애플리케이션이 시스템 DLL을 로드하지 못하게 하여 애플리케이션이 실패할 수 있습니다.

32비트 애플리케이션은 %windir%\Sysnative을 %windir%\System32로 대체하여 네이티브 시스템 디렉터리에 액세스할 수 있습니다. WOW64는 파일 시스템이 액세스를 리디렉션해서는 안 됨을 나타내는 데 사용되는 특수 별칭으로 Sysnative을 인식합니다. 이 메커니즘은 유연하고 사용하기 쉽기 때문에 파일 시스템 리디렉션을 우회하는 것이 좋습니다. 64비트 애플리케이션은 실제 디렉터리가 아닌 가상 디렉터리이므로 Sysnative 별칭을 사용할 수 없습니다.

Windows Server 2003 및 Windows XP: Windows Vista부터 Sysnative 별칭이 추가되었습니다.