次の方法で共有


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

%windir%\System32 ディレクトリは、64 ビット Windows 上の 64 ビット アプリケーション用に予約されています。 ほとんどの DLL ファイル名は、64 ビット バージョンの DLL が作成されたときに変更されていないため、32 ビット バージョンの DLL が別のディレクトリに格納されます。 WOW64は、ファイルシステムリダイレクターを使用して、この違いを隠します.

ほとんどの場合、32 ビット アプリケーションが %windir%\System32, %windir%\lastgood\system32, or %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 はサポートされていません。

特定のサブディレクトリはリダイレクトから除外されます。 これらのサブディレクトリへのアクセスは、\SysWOW64 %windir%にリダイレクトされません。

%windir%\system32\catroot
%windir%\system32\catroot2
\system32\driverstore を %windir%する
%windir%\system32\drivers\etc
\system32\logfiles の %windir%
\system32\spool の %windir%

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: \system32\driverstore %windir%リダイレクトされます。

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

アプリケーションでは、SHGetKnownFolderPath 関数を使用して、%ProgramFiles% ディレクトリ名を決定する必要があります。

Windows Server 2003 および Windows XP: アプリケーションでは、SHGetSpecialFolderPath 関数を使用して、%ProgramFiles% ディレクトリ名を決定する必要があります。

アプリケーションは、Wow64DisableWow64FsRedirection、Wow64EnableWow64FsRedirectionおよび Wow64RevertWow64FsRedirection関数を使用して WOW64 ファイル システム リダイレクターを制御できます。 ファイル システムのリダイレクトを無効にすると、呼び出し元のスレッドによって実行されるすべてのファイル操作に影響するため、単一の CreateFile 呼び出しに必要な場合にのみ無効にし、関数が戻った直後に再度有効にする必要があります。 ファイル システムのリダイレクトを長期間無効にすると、32 ビット アプリケーションがシステム DLL を読み込めなくなり、アプリケーションが失敗する可能性があります。

32 ビット アプリケーションは、\Sysnative for %windir%\System32 %windir%置き換えることで、ネイティブ システム ディレクトリにアクセスできます。 WOW64 は Sysnative を、ファイル システムがアクセスをリダイレクトしないことを示すために使用される特別なエイリアスとして認識します。 このメカニズムは柔軟で使いやすいため、ファイル システムのリダイレクトをバイパスすることをお勧めします。 64 ビット アプリケーションは、仮想ディレクトリではなく仮想ディレクトリであるため、Sysnative エイリアスを使用できないことに注意してください。

Windows Server 2003 および Windows XP: Windows Vista 以降で Sysnative エイリアスが追加されました。