ファイル システム リダイレクタ

%windir%\System32 ディレクトリは、64 ビット アプリケーション用に予約されています。ほとんどの DLL 名は 64 ビットへの移植時に変更されていないので、32 ビット アプリケーションでは System32 ディレクトリ以外のディレクトリを使用する必要があります。WOW64 では、"ファイル システム リダイレクタ" を使用してこの違いを吸収しています。

32 ビット アプリケーションで %windir%\System32 ディレクトリにアクセスしようとすると、アクセスが %windir%\SysWOW64 という新しいディレクトリにリダイレクトされます。%windir%\lastgood\system32 ディレクトリへのアクセスは、%windir%\lastgood\SysWOW64 ディレクトリにリダイレクトされます。%windir%\regedit.exe へのアクセスは、%windir%\SysWOW64\regedit.exe にリダイレクトされます。

32 ビットのシステム ディレクトリの名前を取得するには、64 ビット アプリケーションで GetSystemWow64Directory 関数(英語) を使用する必要があります。

一部のディレクトリは、リダイレクトの対象外です。次のディレクトリへのアクセスは、%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 ディレクトリはリダイレクトされます。

アプリケーションでは、SHGetSpecialFolderPath 関数(英語) を使用して %ProgramFiles% ディレクトリの名前を確認する必要があります。

アプリケーションでは、Wow64DisableWow64FsRedirection 関数(英語) 、Wow64EnableWow64FsRedirection 関数(英語) 、および Wow64RevertWow64FsRedirection 関数(英語) を使用して、WOW64 のファイル システム リダイレクタを制御できます。適切な結果を得るには、ファイル システムのリダイレクトを無効にする必要がある場合、1 回の CreateFile 関数(英語) の呼び出しに対してのみ無効にし、関数から制御が戻ったら、すぐに有効に戻す必要があります。ファイル システムのリダイレクトを長期にわたって無効にすると、32 ビット アプリケーションでシステム DLL が読み込まれなくなり、アプリケーションでエラーが発生することがあります。

32 ビット アプリケーションでは、%windir%\System32 ディレクトリの代わりに %windir%\Sysnative ディレクトリを指定すると、ネイティブのシステム ディレクトリにアクセスできます。Sysnative は、ファイル システムでアクセスをリダイレクトしないことを示すために使用する特殊なエイリアスとして、WOW64 で認識されます。このメカニズムは柔軟で使いやすいので、ファイル システムのリダイレクトを回避する際の推奨メカニズムです。Sysnative エイリアスは実際のディレクトリではなく仮想ディレクトリなので、64 ビット アプリケーションでは Sysnative エイリアスを使用できないことに注意してください。

Windows Server 2003 および Windows XP について:  Sysnative は Windows Vista で追加されました。

このトピックに関するご意見をお寄せください (英語のみ)。

ビルド日付: 2009 年 5 月 30 日


コミュニティの追加

追加
表示: