[ VB.NET / C# ] WMI からネットワーク情報を取得 ( Win32_NetworkAdapterConfiguration )

Pocket

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

スポンサーリンク


Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>