Archive

Archive for 2010年7月

Win32アプリケーションからOSのアーキテクチャを判別する方法

たまには真面目なプログラミングの話題を。
.Net Framework上ではなくWin32APIを使う方法について。
昨日これを実装する必要ができてしまったわけでいろいろと挑戦してました。
というのも、.Net Frameworkがインストールされているか判別し、なければインストールするプログラムを作る過程で
「langpackのみ」x86/x64/ia64でバラバラに置いてあったので自動判別する必要が。
 
1.環境変数
環境変数に「PROCESSOR_ARCHITECTURE」というピンポイントな項目があります。
それは罠だまにあえー!
x64のWindows上からx86用のプログラムを動かした場合、WoW64の仮想環境上で動くので
PROCESSOR_ARCHITECTUREはx86を示します。
(確認済み。最初これではまった。その後、syswow64下のcmd.exeでPROCESSOR_ARCHITECTUREを見るとx86が入っているという情報を見て確信。)
じゃぁどうすんだよ・・・ということで次のこれ。
 
2.GetNativeSystemInfo
XP以降に実装されている新APIのようです。判別するフレームワークは3.5なので存在するものとして考えても実用上問題なし。
SYSTEM_INFO構造体のアドレスを引数で渡すとwProcessorArchitectureにOSのアーキテクチャが入って返ってきます。
(確認済み。CPUがAMD64、OSがx86の状況で実行したらPROCESSOR_ARCHITECTURE_INTEL、つまりx86が入っていた。)
64bitOSの友人に確認を頼んだところ正常にPROCESSOR_ARCHITECTURE_AMD64が入っていた模様。めでたしめでたし。
カテゴリー:プログラミング

新ジャンル追加:サーバー

最近サーバー管理系統のネタがかなり溜まっているのでそれをこっちにも書いてみようかと。
今まで通りメモ程度に。
 
・hijiri稼働(@2010/7/14)
 自宅サーバーhijiriが稼働開始しました。 しかしネット回線はADSLである。
 メインサイトそっちに移しちゃうかなぁと思いつつ面倒で放置。
 サーバー相乗りで使いたい人がいれば(内容によって)相談に応じます。
 
カテゴリー:GNU/Linux

いきてます

多分生きてます
最近はずっとICPC1問で爆散したり自宅サーバー構築してLinux充だったりレポート書いてたり。
 
カテゴリー:その他