著作一覧 |
Googleで検索しているといろいろな情報が見つかるが、Raymond ChenのHow to detect programmatically whether you are running on 64-bit Windowsがおもしろかった。
まず、x64でコンパイルしたプログラムなら、次の関数を定義すれば良い。BOOL Is64BitProcessRunningOn64BitWindows() { return TRUE; }だって、お前のプログラムはx64でコンパイルしているんだろう?
そりゃそうだ。
が、もちろん知りたいことはそんなことではない。
自分のプログラムそのものがx86だろうがx64だろうがどうでも良くて、32ビットCOMサーバーを利用するスクリプトを起動するときに、system32\cscriptを使うかsyswow64\cscriptを使うかという問題なのだった。
もしx86 WindowsであればGetSystemWow64Directory APIの結果が0になるから、system32をGetSystemDirectoryで引っ張り出して、そこにcscriptを付ければ良い(というか、PATHが通っているのは自明だから単にcscriptを実行すれば良い)。
x64 Windowsの場合は結果が得られるから、その結果にcscriptを付けて実行すれば良い。意外と単純な話だった。
ジェズイットを見習え |