Visual C# を使用して Windows のバージョンを判別する方法

概要

この資料では、アプリケーションが実行されているシステムで、どのオペレーティング システムが使用されているのかを判別する方法を手順を追って説明します。この資料では、Microsoft Windows 95、Microsoft Windows 98、Microsoft Windows 98 Second Edition、Microsoft Windows Me (Millennium Edition)、Microsoft Windows NT 3.51、Microsoft Windows NT 4.0、Microsoft Windows 2000、および Microsoft Windows XP の間で判別を行います。


必要条件

  • Microsoft Visual C# .NET
  • Microsoft Visual C# 2005
  • 中級レベルの Visual C# プログラミングの理解

Windows のバージョン データの取得

システムで実行されているオペレーティング システムを判別するには、以下のデータを取得する必要があります。

+--------------------------------------------------------------+
| |Windows|Windows|Windows|Windows NT|Windows|Windows|
| | 95 | 98 | Me | 4.0 | 2000 | XP |
+--------------------------------------------------------------+
|PlatformID | 1 | 1 | 1 | 2 | 2 | 2 |
+--------------------------------------------------------------+
|Major | | | | | | |
| version | 4 | 4 | 4 | 4 | 5 | 5 |
+--------------------------------------------------------------+
|Minor | | | | | | |
| version | 0 | 10 | 90 | 0 | 0 | 1 |
+--------------------------------------------------------------+
: この資料のコードは、Windows のすべての 32 ビット バージョンで使用できることが検証されていますが、Windows 95 および Windows NT 3.51 は Microsoft Visual Studio .NET または共通言語ランタイムをサポートしていません。


オペレーティング システム情報の取得

System 名前空間は OperatingSystem という名前のクラスを含んでいます。OperatingSystem クラスのプロパティは、使用されているオペレーティング システムについて必要な情報を提供します。System.Environment クラスの OSVersion プロパティは OperatingSystem オブジェクトを返します。

    System.OperatingSystem osInfo = System.Environment.OSVersion;

プラットフォームの判別

OperatingSystem 情報の論理評価の最初の手順は、どのプラットフォームを使用しているかを判別することです。OperatingSystem クラスの PlatformID プロパティを使用して、どのプラットフォームを使用しているかを判別できます。


たとえば、Win32Windows プロパティの列挙値は以下のオペレーティング システムのいずれかを示します。

  • Windows 95
  • Windows 98
  • Windows 98 Second Edition
  • Windows Me
同様に、WinNT プロパティは以下のオペレーティング システムのいずれかを示します。

  • Windows NT 3.51
  • Windows NT 4.0
  • Windows 2000
  • Windows XP
    switch(osInfo.Platform)
{
case System.PlatformID.Win32Windows:
{
// Code to determine specific version of Windows 95,
// Windows 98, Windows 98 Second Edition, or Windows Me.
}

case System.PlatformID.Win32NT:
{
// Code to determine specific version of Windows NT 3.51,
// Windows NT 4.0, Windows 2000, or Windows XP.
}

}

Windows 95、Windows 98、Windows 98 Second Edition または Windows Me の特定のバージョンの判別

プラットフォームが Windows 95、Windows 98、Windows 98 Second Edition または Windows Me のいずれかであると判別されたら、メジャー バージョンまたはマイナ バージョンを分析して特定のバージョンを判別できます。

    // Platform is Windows 95, Windows 98, Windows 98 Second Edition,
// or Windows Me.
case System.PlatformID.Win32Windows:

switch (osInfo.Version.Minor)
{
case 0:
Console.WriteLine ("Windows 95");
break;
case 10:
if(osInfo.Version.Revision.ToString()=="2222A")
Console.WriteLine("Windows 98 Second Edition");
else
Console.WriteLine("Windows 98");
break;
case 90:
Console.WriteLine("Windows Me");
break;
}break;

Windows NT、Windows 2000 または Windows XP の特定のバージョンの判別

プラットフォームが Windows NT 3.51、Windows NT 4.0、Windows 2000 または Windows XP のいずれかであると判別されたら、メジャー バージョンまたはマイナ バージョンを分析して特定のバージョンを判別できます。

    // Platform is Windows NT 3.51, Windows NT 4.0, Windows 2000,
// or Windows XP.
case System.PlatformID.Win32NT:

switch(osInfo.Version.Major)
{
case 3:
Console.WriteLine("Windows NT 3.51");
break;
case 4:
Console.WriteLine("Windows NT 4.0");
break;
case 5:
if (osInfo.Version.Minor==0)
Console.WriteLine("Windows 2000");
else
Console.WriteLine("Windows XP");
break;
}break;

サンプルのビルド

次の手順は、この機能を例示するテスト事例をビルドします。

  1. Visual Studio .NET で、新しい C# のコンソール アプリケーションを作成します。デフォルトにより、Class1.cs のコード ウィンドウが開きます。


    : Visual Studio 2005 では、デフォルトのファイルは Program.cs です。Program.cs をダブルクリックすると、コード ウィンドウが開かれます。
  2. Class1.cs コード エディタ ウィンドウのすべてのコードを、次のサンプル コードに置き換えます。
    using System;

    namespace determineOS_CS
    {
    class Class1
    {
    static void Main(string[] args)
    {
    // Get OperatingSystem information from the system namespace.
    System.OperatingSystem osInfo =System.Environment.OSVersion;

    // Determine the platform.
    switch(osInfo.Platform)
    {
    // Platform is Windows 95, Windows 98,
    // Windows 98 Second Edition, or Windows Me.
    case System.PlatformID.Win32Windows:

    switch (osInfo.Version.Minor)
    {
    case 0:
    Console.WriteLine ("Windows 95");
    break;
    case 10:
    if(osInfo.Version.Revision.ToString()=="2222A")
    Console.WriteLine("Windows 98 Second Edition");
    else
    Console.WriteLine("Windows 98");
    break;
    case 90:
    Console.WriteLine("Windows Me");
    break;
    }
    break;

    // Platform is Windows NT 3.51, Windows NT 4.0, Windows 2000,
    // or Windows XP.
    case System.PlatformID.Win32NT:

    switch(osInfo.Version.Major)

    {
    case 3:
    Console.WriteLine("Windows NT 3.51");
    break;
    case 4:
    Console.WriteLine("Windows NT 4.0");
    break;
    case 5:
    if (osInfo.Version.Minor==0)
    Console.WriteLine("Windows 2000");
    else
    Console.WriteLine("Windows XP");
    break;
    }break;
    }
    Console.ReadLine ();
    }
    }
    }
  3. Ctrl + F5 キーを押して、アプリケーションを実行します。コンソール ウィンドウに Windows のバージョンが表示されることを確認します。
プロパティ

文書番号:304283 - 最終更新日: 2006/10/03 - リビジョン: 1

フィードバック