- - PR -
C# BIOS情報を取得する方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 … ------------------------------------- |
|
投稿日時: 2005-11-25 17:42
今日は
WMIでBIOSに関する情報は取れます、しかしシャーシなどはBIOSでなくて SystemEnclosureにあると思います。 |
|
投稿日時: 2005-11-25 18:09
こんばんは。
下記のツールで簡単に、WQL(SQL for WMI)を実行できます。 WMI Query Analyzer BIOS情報もいくつか取得できるみたいです。 簡単なSQL文の知識があれば、WQL文も作成できますので まず上記ツールで必要なWQL文を作成してみて、ちゃんと必要な情報が表示できれば、 あとは、C#からManagementObjectSearcherクラスを使い 作成したWQL文を実行してやれば、欲しい情報が取得できるのではないでしょうか。 |
|
投稿日時: 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