重要になってくる。
C#ではIPアドレスをはじめとして、様々なデバイス情報を取得することができます。
今回は、この取得をWindows Management Instrumentation (WMI)を
用いて行います。
WMIはWindows管理技術の中核を担っています。
また、ローカルのマシンだけでなく、リモートのマシンも管理することが可能です。
C#には、このWMIを表すクラス"ManagementObject"があります。
実際に使ってみてから説明していきます。
"コンソール アプリケーション"プロジェクトを作成して下さい。
"ManagementObject"は"System.ManagementObject"ライブラリ下に
あります。
メニューの[プロジェクト] → [.NET]タブ → "System.Management"を
クリックして、[OK]ボタンを押して下さい。
"using"ディレクティブを用いて、名前空間の修飾省略定義を行います。
/*** Program.cs ***/
using System.Management;
IPアドレスとMACアドレスを標準出力するソースを記述します。
/*** Program.cs ***/
static void Main(string[] args)
{
string query = "SELECT * FROM Win32_NetworkAdapterConfiguration";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject mo in queryCollection)
{
if ((bool)mo["IPEnabled"])
{
Console.WriteLine(mo["Caption"]);
foreach (string ip in (string[])mo["IPAddress"])
{
Console.WriteLine("IP = " + ip);
}
Console.WriteLine("MAC = " + mo["MacAddress"].ToString() + "\n");
}
}
System.Threading.Thread.Sleep(5000);
}
実行します。
実際に"ネットワーク接続"画面を開いて確認してみます。
接続状態が"無効"もしくは"切断"の接続は、コンソールに表示されていません。
これは、"IPEnabled"がfalseになっているためです。
また、「ネットワークケーブルが接続されていません」と表示されている接続は、
IPアドレスが"0.0.0.0"と表示されています。
ちなみに、このネットワークは"OpenVPN"を使った仮想ネットワークです。
他のネットワークアダプタの状態や振る舞いを取得する場合は、
「msdn : Win32_NetworkAdapterConfiguration Class」を
参照して下さい。
このようにWMIを用いることで、マシンの情報を容易に取得することができます。
参照:
Windows Management Instrumentation の秘密 : Microsoft TechNet
ManagementObject クラス (System.Management) : msdn
how do i get the MAC address in c# ? : C# Friends
0 件のコメント:
コメントを投稿