64bit OS のSystemフォルダリダイレクトについて
Windows 64bit OSは Program Filesが 『Program Files (x86)』と『Program Files』に分かれていたり、systemフォルダが『System32』と『SysWow64』に分かれているのですが 32bitアプリケーションから system32にアクセスすると全て、syswow64にリダイレクトされてしまうのです。
Windows Vista 以降
Windows Vista からは、%systemRoot%\sysnative で system32 にアクセスすることができます。注:64bitアプリでは使えません。
Windows XP/2003
sysnativeに対応するHotFixが実は提供されています。
64 ビット バージョンの Windows Server 2003 または Windows XP を実行しているコンピューター上で32ビットアプリケーションが system32 フォルダーにアクセスできません。
以下は機能が提供されてるバージョンです。
Wow64.dll 5.2.3790.3013 /SP1
Wow64.dll 5.2.3790.4156 /SP2
もしかすると、書き込みはできないかも…。
それ以外のWindows XP/2003
方法1.
Wow64DisableWow64FsRedirection と Wow64RevertWow64FsRedirection を使います。
Wow64DisableWow64FsRedirectionで無効化すると、引数1に、 有効するときに Refvert関数を呼ぶ必要があるか返ってくるので、真ならば、再び有効化するときに、Wow64RevertWow64FsRedirection をコールします。
方法2.
linkd や junktion.exe で junction を作成します。
と、結構面倒ですね
ちなみにレジストリも、一部WOW6432Nodeにリダイレクトされるそうな
後、間違えやすいですが、
system32 が 64bit用
syswow64 が 32bit用バイナリです。
関連サイト:
WOW64のファイルシステムのリダイレクトをOFFにする 2008-06-19 - espresso3389の日記
ファイル システム リダイレクタ (Windows)
[KB942589]64 ビット バージョンの Windows Server 2003 または Windows XP を実行しているコンピューター上で32ビットアプリケーションが system32 フォルダーにアクセスできません。
64ビット:リダイレクトのメモ
Comments