ローカルマシン の IPアドレス、MACアドレス、コンピューター名、ログイン中ユーザー名 を取得する サンプルコード を掲載します。 どちらかと言うと、クライアントアプリ側に対する実装での利用を想定しています。
目次
IPアドレス
最近は IPv4 だけでなく、 IPv6 も考慮しないといけないですし、PC 1台 に必ずしも 1つ の ネットワークカード とも限りません(ノートPC で 無線 と 有線 の2ポート等)。 また、物理的な ネットワークインターフェース 1つ に対して 複数のIPアドレス を設定することもできます。 ここでは すべての "有効な" ネットワークインターフェース に対して、 IPv4、IPv6 関わらずすべての IPアドレス を取得するようなコードを記載します。
"有効な" インターフェース のみを取得するようにしているのは、実際に取得したIPアドレスを利用しようとした際(Socket通信とかしようとした際)、有効なインターフェースに対してでしか利用できないからです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | using System; using System.Collections.Generic; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; public List<IPAddress> GetLocalIPAddress() { var ipaddress = new List<ipaddress>(); // 物理インターフェース情報をすべて取得 var interfaces = NetworkInterface.GetAllNetworkInterfaces(); // 各インターフェースごとの情報を調べる foreach (var adapter in interfaces) { // 有効なインターフェースのみを対象とする if (adapter.OperationalStatus != OperationalStatus.Up) { continue ; } // インターフェースに設定されたIPアドレス情報を取得 var properties = adapter.GetIPProperties(); // 設定されているすべてのユニキャストアドレスについて foreach (var unicast in properties.UnicastAddresses) { if (unicast.Address.AddressFamily == AddressFamily.InterNetwork) { // IPv4アドレス ipaddress.Add(unicast.Address); } else if (unicast.Address.AddressFamily == AddressFamily.InterNetworkV6) { // IPv6アドレス ipaddress.Add(unicast.Address); } } } return ipaddress; } </ipaddress> |
MACアドレス
IPアドレス の取得と似ていますが、MACアドレス は 物理的な インターフェース 1つ に対して必ず 1つ しか存在しないのでやや簡単なコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | using System; using System.Collections.Generic; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; public List<physicaladdress> GetLocalPhysicalAddress() { var macaddress = new List<physicaladdress>(); // 物理インターフェース情報をすべて取得 var interfaces = NetworkInterface.GetAllNetworkInterfaces(); // 各インターフェースごとの情報を調べる foreach (var adapter in interfaces) { // 有効なインターフェースのみを対象とする if (adapter.OperationalStatus != OperationalStatus.Up) { continue ; } // MACアドレス macaddress.Add(adapter.GetPhysicalAddress()); } return macaddress; } </physicaladdress></physicaladdress> |
コンピューター名
コンピューター名は Environment クラス
のプロパティから取得できます。
1 2 3 4 5 6 | using System; public string GetLocalMachineName() { return Environment.MachineName; } |
ログインユーザー名
ログインユーザー名 は コンピューター名と同様に Environment クラス
のプロパティから取得できます。
1 2 3 4 5 6 | using System; public string GetLocalUserName() { return Environment.UserName; } |
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!