ネットワークアダプタの情報 ipcnfig /all (C#)(F#)
WMIのWin32_NetworkAdapterConfigurationによって、ipconfig /allで取得するようなネットワークアダプタの情報を取得する事ができます。
※WMIを使用するには、参照設定で「System.Management」を追加する必要があります。
C#サンプル
using System; using System.Management; namespace Example { class Program { static void Main(string[] args) { var ms = new ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration"); foreach (var m in ms.Get()) { Console.WriteLine(""); DispString("説明", m["Description"]); DispStringArray("アドレス", m["IPAddress"]); DispStringArray("サブネット マスク", m["IPSubnet"]); DispStringArray("デフォルトゲートウエイ", m["DefaultIPGateway"]); DispString("物理アドレス", m["MACAddress"]); DispDateTime("リース取得", m["DHCPLeaseObtained"]); DispDateTime("リースの有効期限", m["DHCPLeaseExpires"]); DispString("DHCPサーバ", m["DHCPServer"]); DispString("ホスト名", m["DNSHostName"]); DispStringArray("DNSサーバt{0}", m["DNSServerSearchOrder"]); DispString("DHCP有効", m["DHCPEnabled"]); DispString("TCPウインドサイズ", m["TcpWindowSize"]); DispString("プライマリWINSサーバーのIPアドレス", m["WINSPrimaryServer"]); DispString("WINSEnableLMHostsLookup", m["WINSEnableLMHostsLookup"]); DispString("サービス名", m["ServiceName"]); DispString("SettingID", m["SettingID"]); } Console.WriteLine(); Console.WriteLine("何かのキーを押してください。"); Console.ReadKey(); } static void DispString(string title, object o) { if (o != null) { Console.WriteLine("{0}t{1}", title, o); } } static void DispStringArray(string title, object o) { if (o != null) { Console.WriteLine(title); foreach (var s in (string[])o) { Console.WriteLine("t{0}", s); } } } static void DispDateTime(string title, object o) { if (o != null) { var s = (string)o; var year = s.Substring(0, 4); var month = s.Substring(4, 2); var day = s.Substring(6, 2); var hour = s.Substring(8, 2); var min = s.Substring(10, 2); var sec = s.Substring(12, 2); Console.WriteLine("{0}t{1}/{2}/{3} {4}:{5}:{6}", title, year, month, day, hour, min, sec); } } } }
F#サンプル
open System open System.Management open System.Linq let DispString(title,o:obj) = if o <> null then printfn "%st%s" title (o.ToString()) let DispStringArray(title,o:obj)= if o <> null then printfn "%s" title for s in o:?>string[] do printfn "t%s" s let DispDateTime(title,o:obj) = if o <> null then let s = o:?>string let year = s.Substring(0, 4) let month = s.Substring(4, 2) let day = s.Substring(6, 2) let hour = s.Substring(8, 2) let min = s.Substring(10, 2) let sec = s.Substring(12, 2) printfn "%st%s/%s/%s %s:%s:%s" title year month day hour min sec let ms = new ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration") ms.Get().Cast<ManagementObject>() |>Seq.iter(fun m-> DispString("説明",m.["Description"]) DispStringArray("アドレス",m.["IPAddress"]) DispStringArray("サブネット マスク",m.["IPSubnet"]) DispStringArray("デフォルトゲートウエイ", m.["DefaultIPGateway"]) DispString("物理アドレス", m.["MACAddress"]) DispDateTime("リース取得", m.["DHCPLeaseObtained"]) DispDateTime("リースの有効期限", m.["DHCPLeaseExpires"]) DispString("DHCPサーバ", m.["DHCPServer"]) DispString("ホスト名", m.["DNSHostName"]) DispStringArray("DNSサーバt{0}", m.["DNSServerSearchOrder"]) DispString("DHCP有効", m.["DHCPEnabled"]) DispString("TCPウインドサイズ", m.["TcpWindowSize"]) DispString("プライマリWINSサーバーのIPアドレス", m.["WINSPrimaryServer"]) DispString("WINSEnableLMHostsLookup", m.["WINSEnableLMHostsLookup"]) DispString("サービス名", m.["ServiceName"]) DispString("SettingID", m.["SettingID"])) printfn "何かのキーを押してください。" Console.ReadKey() |> ignore