トップ «前の日記(2016-02-04) 最新 次の日記(2016-02-06)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2016-02-05

_ x86 Windowsで動いているのかx64 Windowsで動いているかによって実行するプログラムを変える

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を付けて実行すれば良い。

意外と単純な話だった。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|

ジェズイットを見習え