|   | 
 
|  
 .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 記事ランキング
		
		
			本日
			月間