我试图通过使用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地址列表还有哪些其他选择?
答案 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