.NET TIPS

OSやプロセスが64bitかどうかを調べるには?[4以降、C#、VB]

デジタルアドバンテージ 一色 政彦
2010/08/05

 Windows XP/Windows Server 2003以降のWindows OSでは、64bit CPU(=Intel 64AMD64。いわゆる「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」など)を作成することもできる。End of Article

カテゴリ:クラス・ライブラリ 処理対象:Windows環境
使用ライブラリ:Environmentクラス(System名前空間)

この記事と関連性の高い別の.NET TIPS
Windows OSのバージョンを判別するには?【Vista対応】
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH