【问题标题】:Not getting actual MAC Address of the system未获得系统的实际 MAC 地址
【发布时间】:2014-09-08 10:07:13
【问题描述】:

我正在使用NetworkInterface 类来获取我系统的MAC Address,这是代码

foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
        {

            // Only consider Ethernet network interfaces, thereby ignoring any
            // loopback devices etc.
            if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
                nic.OperationalStatus == OperationalStatus.Up)
                macAddresses += nic.GetPhysicalAddress().ToString();
        }

在我的系统上,我得到了我的系统的MAC Address,但在其他系统上,我得到了我的隧道适配器物理地址 00-00-00-00-00-00-00-E0,但无法获得实际的 @987654325 @系统。你能帮我弄清楚这个问题,并描述为什么会发生这种情况。

【问题讨论】:

    标签: c# asp.net mac-address


    【解决方案1】:

    你可以看到系统可以有多个MAC地址,所以你不会得到你的系统MAC地址。您可以获取某个接口的 MAC 地址。所以这个隧道适配器是以太网适配器并且已经启动,所以你必须将过滤范围缩小到你想要获取地址的接口。

    因此,您还必须按 NameId 进行过滤,或者您必须使用 MAC 地址列表并删除任何看起来像无效值“00-00-00-00-00-00-00-”的内容E0"。

    不是按名称或 id 显示的 mac 地址,而是网络接口: http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface(v=vs.110).aspx

    有一个叫做Name的字段和一个叫做Id的字段所以:

    if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
                    nic.OperationalStatus == OperationalStatus.Up && !nic.Name.Contains("Tunnel"))
                    macAddresses += nic.GetPhysicalAddress().ToString();
    

    【讨论】:

    • 我将如何通过它们的 ID 或名称过滤 MAC 地址,您能否提供我的代码。
    • 更新答案,查看我提供的 MSDN 链接。要过滤掉隧道接口 !nic.Name.Contains("Tunnel") 您还可以添加 !nic.Name.Contains("VirtualBox") 过滤掉 virtualbox 适配器。
    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多