2

例如,此代码不返回断开连接的 ppp/3G 调制解调器适配器(这就是我所需要的):

foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
{ 
    value = nic.Name; 
}

我在整个网络上搜索了大多数编程语言,但没有找到如何做到这一点。请帮忙。

4

2 回答 2

2

我认为它们没有列出,因为当它不活动/未连接时,它实际上不是网络适配器,直到它连接之后。

当不活动时,我认为它可以被认为是系统配置而不是其他任何东西。

我使用手动定义的 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 文件。

于 2013-04-14T18:02:54.830 回答
2

您可以使用 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"];
}

这将为您提供所有适配器,隐藏,断开连接,连接。基本上所有将显示在设备管理器中的“显示隐藏”选中。

于 2014-10-27T21:44:22.420 回答