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ビット:リダイレクトのメモ

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です