%windir%\ System32ディレクトリは、64ビットWindows上の64ビットアプリケーション用に予約されています。 DLLの64ビットバージョンが作成されたとき、ほとんどのDLLファイル名は変更されなかったため、DLLの32ビットバージョンは別のディレクトリに保存されます。 WOW64は、ファイルシステムリダイレクタを使用してこの違いを隠します。
ほとんどの場合、32ビットアプリケーションが%windir%\ System32、%windir%\ lastgood \ system32、または%windir%\ regedit.exeにアクセスしようとするたびに、アクセスはアーキテクチャ固有のパスにリダイレクトされます。
注意
元のパス | 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ビットバージョンのファイルへのアクセスを確保するか、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、Wow64EnableWow64FsRedirection、およびWow64RevertWow64FsRedirection関数を使用してWOW64ファイルシステムリダイレクターを制御できます。 ファイルシステムのリダイレクトを無効にすると、呼び出しスレッドによって実行されるすべてのファイル操作に影響するため、1つのCreateFile呼び出しに必要な場合にのみ無効にし、関数が戻った直後に再度有効にする必要があります。 長期間ファイルシステムのリダイレクトを無効にすると、32ビットアプリケーションがシステムDLLをロードできなくなり、アプリケーションが失敗します。
32ビットアプリケーションは、%windir%\ System32を%windir%\ Sysnativeに置き換えることにより、ネイティブシステムディレクトリにアクセスできます。 WOW64は、ファイルシステムがアクセスをリダイレクトしてはならないことを示すために使用される特別なエイリアスとしてSysnativeを認識します。 このメカニズムは柔軟で使いやすいため、ファイルシステムのリダイレクトをバイパスするための推奨メカニズムです。 64ビットアプリケーションは、実際のディレクトリではなく仮想ディレクトリであるため、Sysnativeエイリアスを使用できないことに注意してください。
Windows Server 2003およびWindows XP:Windows Vista以降、Sysnativeエイリアスが追加されました。