【发布时间】:2016-07-24 00:34:51
【问题描述】:
我目前正在使用Managed Wifi API 来获取设备所连接的无线网络的 SSID。这是我的方法:
public string getSSID() {
try {
WlanClient wlan = new WlanClient();
Collection<String> ConnectedSSIDs = new Collection<string>();
foreach (WlanClient.WlanInterface wlanInterface in wlan.Interfaces) {
Wlan.Dot11Ssid ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid;
ConnectedSSIDs.Add(new String(Encoding.ASCII.GetChars(ssid.SSID, 0, (int)ssid.SSIDLength)));
}
return ConnectedSSIDs[0];
} catch (Win32Exception) {
return EMPTY;
} catch (Exception Ex) {
throw Ex;
}
}
目前,据此,我可以确定我是连接到 Wifi 和以太网(因为在那种情况下仍然存在 SSID)还是只连接到以太网。
除此之外,我想以某种方式推断我是否只是连接到 Wifi 而不是以太网。
我看过:
令人惊讶的是,查看 Win32_NetworkAdapter 的 AdapterType 属性(仅连接到 Wifi 时)我仍然返回 "Ethernet 802.3" 而不是 “无线” 这是我所期望的。
不幸的是,我认为 Managed Wifi API 中没有一种方法可以实现我想要的。
编辑
所以我定义了这 3 个常量:
private const string WIFI_AND_ETHERNET = "WIFI & ETHERNET";
private const string WIFI = "WIFI";
private const string ETHERNET = "ETHERNET";
目前我上面展示的方法可以推断网络连接是ETHERNET还是WIFI_AND_ETHERNET。
它通过检查 SSID 是否可用/是否可见来做到这一点。如果是这样,那么它将返回WIFI_AND_ETHERNET,但如果没有,它将仅返回ETHERNET。
我现在需要的是一种方法来区分网络连接是通过WIFIONLY还是WIFI_AND_ETHERNET一起
【问题讨论】:
-
@x... 问题和解决方案都不起作用
-
您可以通过使用 gen_physical_medium 的 ndis 实现此目的。这将返回一个枚举,指定它是蓝牙以太网还是无线实验室等。请参阅msdn.microsoft.com/en-us/library/windows/hardware/…