ここでは、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 対応) 」 で示している方法もあります。