ローカル マシン上のワイヤレス インターフェイスの IPv4 を決定するための次のコードがあります。
private List<IPAddressInformation> GetWifiIPAddresses()
{
var list = new List<IPAddressInformation>();
var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (var networkInterface in networkInterfaces)
{
if (networkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
{
var interfaceAddressList = networkInterface.GetIPProperties().UnicastAddresses;
list.AddRange(interfaceAddressList.Where(interfaceIp => interfaceIp.Address.AddressFamily == AddressFamily.InterNetwork));
}
}
return list;
}
Windows 7 ではすべてが魅力的に機能しますが、Windows 8 では WLAN インターフェースがイーサネット アダプターとして決定されます。(NetworkInterfaceType == NetworkInterfaceType.Wireless80211 の代わりに NetworkInterfaceType.Ethernet)
これは、私の WLAN の ipconfig 画面です。
しかし、これはワイヤレス アダプターであり、Windows 7 では ipconfig でワイヤレス インターフェイスとして表示されます。
どうすれば解決できますか?ドライバの問題なのか、Windows 8 の仕様なのか。ローカル マシンの WLAN IP アドレスを特定するには、他にどのような方法がありますか?
ありがとう!
編集:
これは、Hyper-V 仮想スイッチが原因でした。Hyper-V 仮想スイッチは実際の物理アダプターをカバーするため、.NET はそれを WiFi アダプターとして判別できません。
「Hyper-V Virtual Switch Manager」のスイッチを物理ワイヤレス アダプターから vEthernet に削除すると、Windows 7 のように正常に動作します。
しかし、それが仮想スイッチになったことは、実際の物理デバイスの適切な IP を決定するという大きな問題になる可能性があります。