2012年09月11日

32/64bit両方でネイティブに動作するプログラムを作る

今まで32bitか64bitか意識しなくてもちゃんと64bit版OSで動いていたのだが、ある時レジストリの編集をしていてどういうわけか64bit版Windows7で更新されていないのに気が付いた。全てのレジストリではない、ある特定のレジストリである。なぜ更新されないのか調べていくうちに、意外なことが判った。
実は更新されていないのではなく、別のところに更新されていたのだ。

もともと更新したかったのは
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.....だった。
ところが実際に更新されていたのは
\HKEY_LOCAL_MACHINE\Wow6432Node\SOFTWARE\Microsoft\.....だった。

原因はプログラムが32bit用アプリケーションだったためだった。
このレジストリはどうやら64bit用アプリでないと本来の場所に書き込まないらしい。
そこで64bit用にコンパイルし直す必要が出てきたのだが、32bitと64bit別々に作るのは煩わしい。
調べてみると両方で動作するコンパイル方法があることが判った。

ビルドメニューの「構成マネージャ」からプラットフォームで「Any CPU」を指定すればいいのである。
Any CPU

64bit対応アプリの作成方法の参考ページ
http://code.msdn.microsoft.com/windowsdesktop/10-64-NET-VB-ae70ffc1

ここには以下の表が掲載されている。これで一目瞭然。
AnyCPU

posted by なっちゃん at 19:09| 静岡 ☀| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック