ここでは、WMI ( Windows Management Instrumentation ) から IP アドレスや MAC アドレスなどのネットワーク情報を取得するサンプルコードを掲載しています。
ところで、だんだんと暑くなってきました。日中は半袖でも問題ないくらいです。
スポンサーリンク
ネットワーク情報を取得するサンプル
下記のサンプルは VB.NET と C# ともに、参照設定を事前に追加しておく必要があります。 追加する参照設定は、System.Management です。
VB.NET
' Imports System.Management
' WMI からネットワークアダプタ設定のすべてを取得する
Dim sql As String = "SELECT * FROM Win32_NetworkAdapterConfiguration"
Dim s As ManagementObjectSearcher = New ManagementObjectSearcher(sql)
' 実際に取得
Dim objects As ManagementObjectCollection = s.Get()
For Each obj As ManagementObject In objects
' アダプタ名
Console.WriteLine(obj("Caption"))
' アダプタが有効であるか確認
If (DirectCast(obj("IPEnabled"), Boolean)) Then
Console.WriteLine("Enabled") ' 有効
' MACアドレスを取得
Console.WriteLine("MAC アドレス = " + obj("MacAddress"))
' IPアドレスを取得(IPv4 IPv6 ともに取得できる)
For Each ip As String In DirectCast(obj("IPAddress"), String())
Console.WriteLine("IP アドレス = " + ip)
Next
Else
Console.WriteLine("Disabled") ' 無効
End If
Next
C#
//using System.Management;
// WMI からネットワークアダプタ設定のすべてを取得する
string sql = "SELECT * FROM Win32_NetworkAdapterConfiguration";
ManagementObjectSearcher s = new ManagementObjectSearcher(sql);
// 実際に取得
ManagementObjectCollection objects = s.Get();
foreach (ManagementObject obj in objects)
{
Console.WriteLine(obj["Caption"]);
if ((bool)obj["IPEnabled"])
{
Console.WriteLine("Enabled");
Console.WriteLine("MAC アドレス = " + obj["MacAddress"]);
foreach (string ip in (string[])obj["IPAddress"]) {
Console.WriteLine("IP アドレス = " + ip);
}
} else {
Console.WriteLine("Disabled");
}
}
サンプル内で、”IPAddress” や “MacAddress” のように文字列で取得したい情報を指定していますが、サンプルで取得している情報のほかにも、サブネットマスクやデフォルトゲートウェイといった各種情報を取得することができます。
アクセスできる情報の名前 ( 文字列 ) とデータの型の一覧は下記のリンク先で確認できます。
なお、ここで示した WMI から取得する以外に IP アドレスや MAC アドレスを取得する方法には、「 IP アドレス および MAC アドレスの取得 (IPv6 対応) 」 で示している方法もあります。