使用C#获取我的路由器(而不是我的网卡MAC)的MAC地址

时间:2013-04-29 09:37:55

标签: c# router

我需要获取路由器的MAC地址,以便在我的程序中使用它作为标识符。

我的电脑使用以太网电缆连接到路由器

有没有办法获取MAC,如果有,有办法改变它或使用C#克隆它? p>

我需要获取路由器MAC地址而不是我的网卡MAC地址......

我看到像这样的种子Get BSSID (MAC address) of wireless access point from C# ...如果有可能获得无线设备的MAC地址,是不是可以获得连接的以太网设备的MAC地址?

2 个答案:

答案 0 :(得分:1)

您可以寻求这个答案:Get the Default Gateway

public static IPAddress GetDefaultGateway()
{
    var card = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault();
    if(card == null) return null;
    var address = card.GetIPProperties().GatewayAddresses.FirstOrDefault();
    return address.Address;
}

编辑(这是你找到的):

var macAddr =
(
    from nic in NetworkInterface.GetAllNetworkInterfaces()
    where nic.OperationalStatus == OperationalStatus.Up
    select nic.GetPhysicalAddress().ToString()
).FirstOrDefault();

答案 1 :(得分:1)

从更多的研究来看,没有托管API可以让你这样做。您需要使用How do I access ARP-protocol information through .NET?http://www.pinvoke.net/default.aspx/iphlpapi.sendarp中描述的Windows API方法,或者您需要启动一个shell来运行arp -a并捕获结果。