マシンで使用可能なIPv4NICardをメニューに追加するコードを作成しました。XPマシンでテストされており、すべて問題なく動作しているようです(XPでも構築されています)。
Windows 7でテストしたところ、1つが切断されていても、常に2つのIPアドレスが入力されていました。Win7マシンの結果は次のとおりです。
WLAN接続
LAN切断
観測:正しいWLANアドレスが表示され、不正なLANアドレスが表示されます(192.168に接続されている場合は別のネットワーク番号ですが、メニューに入力されているLANアドレスは169.254です)
期待:正しいWLANアドレスが表示され、LANがありません表示(切断されています)
ipconfigはLANの「メディア切断」を読み取ります
WLAN接続
LAN接続
観測:正しいWLANアドレスが表示され、正しいLANアドレスが表示
される期待される:正しいWLANアドレスが表示される、正しいLANアドレスが表示される
ipconfigが正しいアドレスを読み取る
WLAN切断
LAN接続
観察済み:正しいWLANアドレスが表示され、正しいLANアドレスが表示
される期待される:WLANアドレスが表示されない(切断されている)、正しいLAN表示
ipconfigがWLANの「メディア切断」を読み取る
コードブロックは次のとおりです。
_adapters.Clear();
if (NetworkInterface.GetIsNetworkAvailable())
{
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in networkInterfaces)
{
foreach (UnicastIPAddressInformation addr in adapter.GetIPProperties().UnicastAddresses)
{
//This filters out IPv6 and Loopback NICs
if (addr.Address.AddressFamily == AddressFamily.InterNetwork
&& adapter.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{ //This formats something like: 192.168.1.0 - Ethernet adapter Local Network Connection
_adapters.Add(addr.Address.ToString() + " - " + adapter.NetworkInterfaceType.ToString() + " adapter " + adapter.Name);
}
}
}
}
VS2010で4.0.NETを使用する価値