2009/12/04(金)Windows x64のWOW64リダイレクトを回避する方法

WOW64のファイルシステムリダイレクタとその回避方法

SysWOW64リダイレクトが邪魔になることがあったので、回避方法をメモ。

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

Windows x64では、WOW64(Windows On Windows 64)という仕組みによって32ビットアプリケーションを動作させています。しかし、アプリケーションが使用するDLLは、アプリケーションが32ビットならDLLも32ビット、アプリケーションが64ビットならDLLも64ビットでなければなりません。

この問題を解決するのがファイルシステムリダイレクタです。具体的には、32ビットアプリケーションが「%windir%\System32」ディレクトリにアクセスすると、「%windir%\SysWOW64」にリダイレクトされます。「%windir%\SysWOW64」には32ビットDLLが格納されているので、32ビットアプリケーションから見るとSystem32にある32ビットDLLを使っているように見えます。(この話はWindows 7 RCの記事で少ししています。)

また、「%windir%\System32」ディレクトリには64ビットDLLが格納されていて、64ビットアプリケーションはこのディレクトリに普通にアクセスできます。

リダイレクトで発生する問題

32ビットアプリケーションから「%windir%\System32」ディレクトリにアクセスしようとしてもリダイレクトされてしまうため、単純にSystem32にアクセスできないという問題が発生します。

例えば、32ビットアプリケーションから64ビット版コマンドプロンプト「%windir%\System32\cmd.exe」を起動しようとしても、実際に起動するのは32ビット版コマンドプロンプト「%windir%\SysWOW64\cmd.exe」になってしまいます。

リダイレクトの回避方法

32ビットアプリケーションから「%windir%\System32」にアクセスする時には、代わりに「%windir%\Sysnative」にアクセスします。

例えば、32ビットアプリケーションから64ビット版コマンドプロンプトを呼び出すには、「%windir%\Sysnative\cmd.exe」を指定します。

参考ページ

2009/11/10(火)Windowsパッチメモ

Windows Vista以前へのパッチ

ちょっと前の話ですが、Windows 7で導入された機能の一部がWindows Vista(後者はXPも)向けに提供されました。

グラフィック機能の強化は、DirectX11とWDDM1.1のようで、導入してみるとDirectXのバージョンは確かに11になっていました。ただ、WDDMは1.1になったのかどうかよく分かりません。dwm.exeのメモリ使用量が減るかもしれないと思って調べてみても特に変わってないようですし。ドライバ側がまだ対応してないのかもしれないですね。

リモート デスクトップ接続の更新は、XP/Vistaから7へ接続するときにパフォーマンス向上や新機能の恩恵が受けられるようです。逆の場合は変化がないのですが、それでも7同士でないと恩恵が受けられないよりは良いですね。

ツールとか

PowerShell v2自体は夏頃に公開されていましたが、それと他の管理ツールが含まれたパッケージのようです。PowerShell ISEとかはPowerShellを書くなら便利そうですね。

PowerShellは前々から面白そうとは思っていたのですが、まだ試したことはありません(;^_^A

そのうち試して見たいなあ。

結構前から時たま話題になっていた、Microsoftの無償ウィルス対策ソフト。

とりあえず、Windows 7のXPモード(Windows Virtual PC)上で動いているWindows XP用のウィルス対策ソフトとして導入しました。使用頻度が低い仮想環境のために有償対策ソフトを買いたくなかったのでちょうど良かったです(^-^;

他の無償の対策ソフトと違ってユーザー登録などの作業も一切必要ないのが楽ですね。検知性能については、すごく悪いということもなさそうなので、とりあえず仮想環境で使う分には十分かな。