C#获取活动网络适配器异常:识别不存在的本地连接而非Wi-Fi
活动网卡检测问题修复
你的代码逻辑出错的核心原因是逻辑运算符优先级问题:&&的优先级高于||,导致原本的条件被拆解成了两部分:
- 满足
非回环、非隧道、状态Up且名称以Ethernet开头 - 或者
名称以Wi-Fi开头 - 或者
名称以Local开头
这就导致只要网卡名称以"Local"开头,哪怕它是禁用状态、甚至是不存在的虚拟网卡,都会被First()选中。
修正代码如下,把名称匹配的条件用括号包裹,确保和前面的三个条件同时生效:
var activeAdapter = networks.First(x => x.NetworkInterfaceType != NetworkInterfaceType.Loopback && x.NetworkInterfaceType != NetworkInterfaceType.Tunnel && x.OperationalStatus == OperationalStatus.Up && (x.Name.StartsWith("Ethernet") || x.Name.StartsWith("Wi-Fi") || x.Name.StartsWith("Local")) ); label2.Text = activeAdapter.Name;
修正后的逻辑会先筛选出非回环、非隧道、状态为Up的有效网卡,再在这些网卡里匹配名称前缀,这样就能正确拿到处于活动状态的Wi-Fi网卡了。
内容的提问来源于stack exchange,提问作者AmooReza
相关产品推荐
相关产品推荐

