DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

WMIを使ってOSの情報を取得する

WMIのWin32_OperatingSystemクラスを使用すれば、OSに関する様々な情報を取得できます。

WMIはWindows2000以上のOSで使用できます。(それ以外のOSでもインストールすれば使用できます。こちらからダウンロードできるようです。

下の例ではSystem.Management.dllを参照設定に追加する必要があります。

VB.NET
コードを隠すコードを選択
Dim mc As New System.Management.ManagementClass("Win32_OperatingSystem")
Dim moc As System.Management.ManagementObjectCollection = mc.GetInstances()
Dim mo As System.Management.ManagementObject
For Each mo In moc
    'OSの名前
    Console.WriteLine("Name:{0}", mo("Name"))
    'OSの簡単な説明
    Console.WriteLine("Caption:{0}", mo("Caption"))
    'OSの説明(コンピュータの説明)
    Console.WriteLine("Description:{0}", mo("Description"))
    'OSバージョン
    Console.WriteLine("Version:{0}", mo("Version"))
    'OSビルド番号
    Console.WriteLine("BuildNumber:{0}", mo("BuildNumber"))
    'OSの製造者
    Console.WriteLine("Manufacturer:{0}", mo("Manufacturer"))
    'OSの言語ID
    Console.WriteLine("Locale:{0}", mo("Locale"))
    'OSの言語
    Console.WriteLine("OSLanguage:{0}", mo("OSLanguage"))
    'シリアルナンバー
    Console.WriteLine("SerialNumber:{0}", mo("SerialNumber"))
    'インストールされた日時
    Console.WriteLine("InstallDate:{0}", mo("InstallDate"))
    '最後にブートされた日時
    Console.WriteLine("LastBootUpTime:{0}", mo("LastBootUpTime"))
    'ウィンドウズディレクトリ
    Console.WriteLine("WindowsDirectory:{0}", mo("WindowsDirectory"))
    'OSがインストールされている物理ディスクパーティション
    Console.WriteLine("SystemDevice:{0}", mo("SystemDevice"))
    'システムドライブ
    Console.WriteLine("SystemDrive:{0}", mo("SystemDrive"))
    'Bootするディスクドライブ
    Console.WriteLine("BootDevice:{0}", mo("BootDevice"))
    'Windows Plus!のID
    Console.WriteLine("PlusProductID:{0}", mo("PlusProductID"))
    'Windows Plus!のバージョン
    Console.WriteLine("PlusVersionNumber:{0}", mo("PlusVersionNumber"))

    mo.Dispose()
Next mo

moc.Dispose()
mc.Dispose()
C#
コードを隠すコードを選択
System.Management.ManagementClass mc =
    new System.Management.ManagementClass("Win32_OperatingSystem");
System.Management.ManagementObjectCollection moc = mc.GetInstances();
foreach (System.Management.ManagementObject mo in moc)
{
    //OSの名前
    Console.WriteLine("Name:{0}", mo["Name"]);
    //OSの簡単な説明
    Console.WriteLine("Caption:{0}", mo["Caption"]);
    //OSの説明(コンピュータの説明)
    Console.WriteLine("Description:{0}", mo["Description"]);
    //OSバージョン
    Console.WriteLine("Version:{0}", mo["Version"]);
    //OSビルド番号
    Console.WriteLine("BuildNumber:{0}", mo["BuildNumber"]);
    //OSの製造者
    Console.WriteLine("Manufacturer:{0}", mo["Manufacturer"]);
    //OSの言語ID
    Console.WriteLine("Locale:{0}", mo["Locale"]);
    //OSの言語
    Console.WriteLine("OSLanguage:{0}", mo["OSLanguage"]);
    //シリアルナンバー
    Console.WriteLine("SerialNumber:{0}", mo["SerialNumber"]);
    //インストールされた日時
    Console.WriteLine("InstallDate:{0}", mo["InstallDate"]);
    //最後にブートされた日時
    Console.WriteLine("LastBootUpTime:{0}", mo["LastBootUpTime"]);
    //ウィンドウズディレクトリ
    Console.WriteLine("WindowsDirectory:{0}", mo["WindowsDirectory"]);
    //OSがインストールされている物理ディスクパーティション
    Console.WriteLine("SystemDevice:{0}", mo["SystemDevice"]);
    //システムドライブ
    Console.WriteLine("SystemDrive:{0}", mo["SystemDrive"]);
    //Bootするディスクドライブ
    Console.WriteLine("BootDevice:{0}", mo["BootDevice"]);
    //Windows Plus!のID
    Console.WriteLine("PlusProductID:{0}", mo["PlusProductID"]);
    //Windows Plus!のバージョン
    Console.WriteLine("PlusVersionNumber:{0}", mo["PlusVersionNumber"]);

    mo.Dispose();
}

moc.Dispose();
mc.Dispose();

Microsoft Windows XP Professionalでの出力例は、次のようになります。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • 「???を参照に追加します」の意味が分からないという方は、こちらをご覧ください。
  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。