2013-03-01 117 views
2

我已经确定的IPv4无线接口的本地机器上下面的代码NetworkInterface.NetworkInterfaceType决定无线接口以太网类型在Windows 8

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.Ethernet代替NetworkInterfaceType.Wireless80211)

这里是我的WLAN enter image description here

一个IPCONFIG屏幕,但它是一个无线适配器,在Windows 7 IPCONFIG显示它作为一个无线接口。

任何线索我该如何解决它?它是驱动程序问题还是Windows 8规范? 如何确定本地机器上的WLAN IP地址?

谢谢!

编辑

正是因为Hyper-V虚拟交换机。 Hyper-V虚拟交换机包含真正的物理适配器,因此.NET无法将其确定为WiFi适配器。

当我从我的身体无线适配器删除在“Hyper-V虚拟交换机管理器”切换到vEthernet它工作正常,就像在Windows 7

但是,打开虚拟交换机可能是确定正确的IP进行的大问题实际的物理设备。

回答

0

切换交换机有点类似于修改物理LAN上的网络基础设施......程序通常无法控制的东西。

机器将具有一个或多个网络适配器,因此它们可能在不同的操作时间具有不同的地址。如果您的问题是关于识别机器的IP地址,那么您可能需要重新构建它。为什么需要IP地址?这可能会提出解决问题的其他方法(包括在适配器名称上使用启发式方法而不是依赖于适配器类型)。

如果您需要考虑单个IP地址,也许您最好确定使用哪个适配器连接特定服务器并使用其IP地址。 Win32 API GetBestRoute()为您提供。

+0

我有WP7应用程序发送文件到PC,在客户端我需要显示用户他的WiFi IP地址,所以他可以建立连接从手机和通过WiFi传输所需的文件。 – 2013-03-01 15:40:48

相关问题