C#获取MAC地址

Posted 紫星131

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#获取MAC地址相关的知识,希望对你有一定的参考价值。

C#获取MAC地址

/// <summary> 
/// 获取MAC地址(返回第一个物理以太网卡的mac地址) 
/// </summary> 
/// <returns>成功返回mac地址,失败返回null</returns> 
public string getMacAddress()
{ 
    string macAddress = null;
    try
    {
        NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
        foreach (NetworkInterface adapter in nics)
        {
            if (adapter.NetworkInterfaceType.ToString().Equals("Ethernet")) //是以太网卡
            {
                string fRegistryKey = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" + adapter.Id + "\\Connection"; 
                RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false); 
                if (rk != null) 
                { 
                    // 区分 PnpInstanceID     
                    // 如果前面有 PCI 就是本机的真实网卡    
                    // MediaSubType 为 01 则是常见网卡,02为无线网卡。    
                    string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString(); 
                    int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));
                    if (fPnpInstanceID.Length > 3 && fPnpInstanceID.Substring(0, 3) == "PCI") //是物理网卡
                    {
                        macAddress = adapter.GetPhysicalAddress().ToString();
                        break;
                    }
                    else if (fMediaSubType == 1) //虚拟网卡
                        continue;
                    else if (fMediaSubType == 2) //无线网卡(上面判断Ethernet时已经排除了)
                        continue; 
                }
            }
        }
    }
    catch
    {
        macAddress = null;
    }
    return macAddress;
}

 

以上是关于C#获取MAC地址的主要内容,如果未能解决你的问题,请参考以下文章

C#获取MAC地址

在 WCF 服务 C# 的服务器端获取客户端的 Mac 地址不重复(在 WCF 3.0 中获取客户端 IP 地址)

在 C# 中格式化 MAC 地址

在C#中获取机器MAC地址的可靠方法

C# 获取正在使用的Mac地址

C#通过本地IP获取本地MAC地址(多个接口)