|
.NET TIPS
OSやプロセスが64bitかどうかを調べるには?[4以降、C#、VB]
デジタルアドバンテージ 一色 政彦
2010/08/05 |
 |
|
Windows XP/Windows Server 2003以降のWindows OSでは、64bit CPU(=Intel 64やAMD64。いわゆる「x64」)に対応したバージョンが提供されている。現在の最新OSのWindows 7では、32bit CPU(=いわゆる「x86」)版のシェアが54%なのに対して、64bit版のシェアが46%と(以前と比べて)大きく伸びてきている(資料(英語))。このように現在は32bit CPUから64bit CPUへの過渡期であり、今後、エンド・ユーザーの環境はこの2種類のWindows OSが混在することが増えてくるだろう。
このような状況のため、アプリケーション内で32bit環境なのか、64bit環境なのかを調べたいというケースがある。.NET Framework 4には、そのようなケースで役立つ、OSやプロセスが64bitかどうかを調べるためのプロパティが用意されている。具体的には、下記の2つの静的プロパティ(読み取り専用)である。
- Environment.Is64BitOperatingSystemプロパティ:OSが64bitか調べる
- Environment.Is64BitProcessプロパティ:プロセスが64bitか調べる
プロパティ値のデータ型はいずれもBoolean型で、64bitの場合にはtrue、それ以外の場合はfalseが得られる。
OSとプロセスの2種類が用意されているわけだが、これはなぜかというと、「WOW64(Windows 32bit emulation On Windows 64bit)」という機能によって、64bit OS上でも32bitプロセス空間でアプリケーションが実行できるからだ。このWOW64環境下では、OSは64bit版でも、プロセスは32bitということになる。
下記のコードは、上記の2種類のプロパティを呼び出すコンソール・アプリケーションのサンプルである。
using System;
class Program
{
static void Main()
{
if (Environment.Is64BitOperatingSystem)
Console.WriteLine("64bit OS");
else
Console.WriteLine("32bit OS");
// 出力例:64bit OS
if (Environment.Is64BitProcess)
Console.WriteLine("64bitプロセス");
else
Console.WriteLine("32bitプロセス");
// 出力例:32bitプロセス
Console.ReadLine(); // 実行を停止
}
}
|
Module Module1
Sub Main()
If Environment.Is64BitOperatingSystem Then
Console.WriteLine("64bit OS")
Else
Console.WriteLine("32bit OS")
End If
' 出力例:64bit OS
If Environment.Is64BitProcess Then
Console.WriteLine("64bitプロセス")
Else
Console.WriteLine("32bitプロセス")
End If
' 出力例:32bitプロセス
Console.ReadLine() ' 実行を停止
End Sub
End Module
|
|
OSやプロセスが64bitかどうかを調べるサンプル・プログラム(上:C#、下:VB) |
なお、Visual Studioで開発中のプロジェクトのプロパティ(=[ソリューション エクスプローラー]のプロジェクト項目を右クリックして、表示されるコンテキスト・メニューから[プロパティ]を実行すると表示される)の[ビルド]タブにある、[プラットフォーム ターゲット]を「x86」にしてビルドしたアプリケーションを64bit OS上で実行すると、前述のWOW64により32bitプロセス空間で32bitアプリケーションとして実行される。[プラットフォーム ターゲット]では、このほか「x64」や「Any CPU」などを選択できる。
また、メニューバーの[ビルド]−[構成マネージャー]を実行すると表示される[構成マネージャー]ダイアログで、[アクティブ ソリューション プラットフォーム]コンボボックスから「<新規作成...>」を選択すると、[新しいソリューション プラットフォーム]ダイアログが表示される。このダイアログで、プラットフォーム・ターゲットを指定して新しいプラットフォーム構成(「x86」「x64」「Any CPU」など)を作成することもできる。
カテゴリ:クラス・ライブラリ 処理対象:Windows環境
使用ライブラリ:Environmentクラス(System名前空間) |
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間