使用VB.NET 2010获取MAC地址

时间:2012-10-23 07:57:51

标签: vb.net vb.net-2010

我试图通过使用MAC address中的以下功能获取计算机上每个网络接口卡的VB.NET,但我只是意识到此功能在Windows XP中不起作用:< / p>

  Function getMacAddress()
        Dim nics() As NetworkInterface = NetworkInterface.GetAllNetworkInterfaces()
        Return nics(1).GetPhysicalAddress.ToString
    End Function

如何让此代码在Windows XP上运行?在Windows XP上获取MAC地址列表还有哪些其他选择?

2 个答案:

答案 0 :(得分:1)

在XP上为我工作,除了我有几个接口,我的第一个(第0个)是我的“真实”MAC地址,它对应于非.NET程序报告的MAC地址。

答案 1 :(得分:1)

连接到不同的VPN时,我做了一些挖掘工作。到目前为止,下面似乎非常可靠。如上所述,依赖0或1作为实际物理适配器在许多情况下不起作用。在某些情况下,我的实际以太网适配器是第3适配器。排除环回,隧道和ppp适配器应缩小范围。我发现我的许多非物理适配器都有字符串“00000000000000E0”作为mac地址。

Private Function getMacAddress() As String
    Try
        Dim adapters As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
        Dim adapter As NetworkInterface
        Dim myMac As String = String.Empty

        For Each adapter In adapters
            Select Case adapter.NetworkInterfaceType
                'Exclude Tunnels, Loopbacks and PPP
                Case NetworkInterfaceType.Tunnel, NetworkInterfaceType.Loopback, NetworkInterfaceType.Ppp
                Case Else
                    If Not adapter.GetPhysicalAddress.ToString = String.Empty And Not adapter.GetPhysicalAddress.ToString = "00000000000000E0" Then
                        myMac = adapter.GetPhysicalAddress.ToString
                        Exit For ' Got a mac so exit for
                    End If

            End Select
        Next adapter

        Return myMac
    Catch ex As Exception
        Return String.Empty
    End Try
End Function