例如,此代码不返回断开连接的 ppp/3G 调制解调器适配器(这就是我所需要的):
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
value = nic.Name;
}
我在整个网络上搜索了大多数编程语言,但没有找到如何做到这一点。请帮忙。
例如,此代码不返回断开连接的 ppp/3G 调制解调器适配器(这就是我所需要的):
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
value = nic.Name;
}
我在整个网络上搜索了大多数编程语言,但没有找到如何做到这一点。请帮忙。
我认为它们没有列出,因为当它不活动/未连接时,它实际上不是网络适配器,直到它连接之后。
当不活动时,我认为它可以被认为是系统配置而不是其他任何东西。
我使用手动定义的 PPPoE 连接以及 LTE 数据棒连接和连接到我的家庭服务器的 VPN 在我的机器上尝试了一些简单的测试。所有这些类型的网络适配器都以这种方式运行。
您可能想尝试找到一种列出所有“拨号”样式连接的方法。(不知道自己该怎么做)
编辑
拨号连接的位置在文本文件中的多个位置...
Windows 7 上的用户特定路径示例
C:\Users\darren\AppData\Roaming\Microsoft\Network\Connections\Pbk(文件“rasphone.pbk”)
所有用户
C:\Users\All Users\Microsoft\Network\Connections\Pbk(文件“rasphone.pbk”)
如果我在记事本中用笔在所有用户下的系统中,我会在我的 LTE 定义的连接中看到类似的内容......
[LTE]
Encoding=1
PBVersion=1
Type=1
AutoLogon=0
...
[PPPoE]
Encoding=1
PBVersion=1
Type=5
AutoLogon=0
它基本上是一个 INI 文件。
您可以使用 Win32_NetworkAdapterConfiguration 获取所有网络适配器(即使是隐藏的或未连接的)。确保如果您使用下面的代码,则包括 System.Management。
这是一个快速示例,说明如何将它们放入列表中,然后遍历它以获取它们的名称。
public static IEnumerable<ManagementObject> GetAllAdaptors() {
var tempList = new List<ManagementObject>();
ManagementObjectCollection moc =
new ManagementClass("Win32_NetworkAdapterConfiguration").GetInstances();
foreach(ManagementObject obj in moc) {
tempList.Add(obj);
}
return tempList;
}
以上返回所有网络适配器的列表。获取名称您所要做的就是遍历列表,如下所示。
foreach(ManagementObject obj in GetAllAdapters()) {
var name = obj["Caption"];
}
这将为您提供所有适配器,隐藏,断开连接,连接。基本上所有将显示在设备管理器中的“显示隐藏”选中。