- PR -

C# BIOS情報を取得する方法

1
投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2005-11-25 16:30
BIOS情報を取得したいのですが、C#で取得する方法を教えてください。

例えば、Sandra2005等のフリーソフトを使うと、BIOS情報が表示されます。(下記の表示例を参照願います)このプログラムからBIOS情報を取得する方法があることが分かります。
Sandra2005のサイト
http://www.sisoftware.net/

 これど同様にC#にBIOS情報を取得したい。Sandra2005では表示例にある通り、詳細な情報が表示さあれていますが、私は下記の5項目についてのみ興味があります。
 DELL製マシンを多く使用しているので、5項目の中でもシステム欄のモデル名(例 DIM4500)とシステムシャーシ欄のシリアルナンバー(例 HPJD41X)の取得方法に特に興味があります。


<取得したいBIOS情報>

システム欄
生産者 : Dell Computer Corporation
モデル : DIM4500←★DELLの機種名に対応する
ID : 4C4C4544-4A100050-C0C84480-5831344F
システムシャーシ欄
生産者 : Dell Computer Corporation
シリアルナンバー : HPJD41X←★DELLのサービスタグナンバーに対応する


以下Sandra2005でDELL Dimmension4500のBIOS情報の表示例

※機種名とサービスタグナンバーが特定できるBIOS情報が
含まれているのが分かる
-------------------------------------

SiSoftware Sandra

システム
生産者 : Dell Computer Corporation
モデル : DIM4500
ID : 4C4C4544-4A100050-C0C84480-5831344F

システムシャーシ
生産者 : Dell Computer Corporation
タイプ : ミニ タワー
ロックが可能 : いいえ
シリアルナンバー : HPJD41X
Boot-up の状態 : 安全
電源の状態 : 安全

マザーボード
生産者 : Intel Corporation
MP サポート : いいえ
モデル : D845EPT2
バージョン : AAA83422-106
シリアルナンバー : MY04P6151934125V08XB
システム BIOS : 63-0100-000001-00101111-091002-i845



-------------------------------------
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2005-11-25 17:42
今日は

WMIでBIOSに関する情報は取れます、しかしシャーシなどはBIOSでなくて
SystemEnclosureにあると思います。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-11-25 18:09
こんばんは。

下記のツールで簡単に、WQL(SQL for WMI)を実行できます。
WMI Query Analyzer
BIOS情報もいくつか取得できるみたいです。

簡単なSQL文の知識があれば、WQL文も作成できますので
まず上記ツールで必要なWQL文を作成してみて、ちゃんと必要な情報が表示できれば、

あとは、C#からManagementObjectSearcherクラスを使い
作成したWQL文を実行してやれば、欲しい情報が取得できるのではないでしょうか。

ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2005-11-26 15:07
ご回答ありがとうございます。
端末固有の情報を取得することができました。

// 例
//
// メーカー名
// 機種
// サービスタグナンバー(DELLのシリアル番号)
// MACアドレス
//
private void buttonMacAddress_Click(object sender, System.EventArgs e)
{
textBoxOutput.Text = "";
ManagementScope scope = new ManagementScope("root\\cimv2");
scope.Connect();

System.Management.ObjectQuery q = new System.Management.ObjectQuery ("select MACAddress from Win32_NetworkAdapter where AdapterTypeID=0");

ManagementObjectSearcher searcher = new ManagementObjectSearcher (scope, q);
ManagementObjectCollection collection = searcher.Get();

StringBuilder sb = new StringBuilder();
foreach (ManagementObject o in collection)
{
sb.AppendFormat("MACAddress: {0}\r\n",o.GetPropertyValue ("MACAddress"));
}
textBoxOutput.Text = sb.ToString();

}

private void buttonServiceTag_Click(object sender, System.EventArgs e)
{
textBoxOutput.Text = "";
ManagementScope scope = new ManagementScope("root\\cimv2");
scope.Connect();

System.Management.ObjectQuery q = new System.Management.ObjectQuery ("select SerialNumber from Win32_BIOS");

ManagementObjectSearcher searcher = new ManagementObjectSearcher (scope, q);
ManagementObjectCollection collection = searcher.Get();

StringBuilder sb = new StringBuilder();
foreach (ManagementObject o in collection)
{
sb.AppendFormat("DELL ServiceTag: {0}\r\n",o.GetPropertyValue ("SerialNumber"));
}
textBoxOutput.Text = sb.ToString();

}

private void buttonModel_Click(object sender, System.EventArgs e)
{
textBoxOutput.Text = "";
ManagementScope scope = new ManagementScope("root\\cimv2");
scope.Connect();

System.Management.ObjectQuery q = new System.Management.ObjectQuery ("select Manufacturer,Model from Win32_ComputerSystem");

ManagementObjectSearcher searcher = new ManagementObjectSearcher (scope, q);
ManagementObjectCollection collection = searcher.Get();

StringBuilder sb = new StringBuilder();
foreach (ManagementObject o in collection)
{
sb.AppendFormat("Manufacturer: {0}\r\n",o.GetPropertyValue ("Manufacturer"));
sb.AppendFormat(" Model: {0}\r\n",o.GetPropertyValue ("Model"));
}
textBoxOutput.Text = sb.ToString();
}

1

スキルアップ/キャリアアップ(JOB@IT)