技术qq交流群:JavaDream:251572072

创梦技术交流平台:资源下载,技术交流,网络赚钱:
交流qq群:1群:248318056
2群:251572072
技术交流平台:cre.iqee.cn
博文相关代码资源下载地址:cre.iqee.cn

以下是收集的几种C#程序读取MAC地址的方法,示例中是读取所有网卡的MAC地址,如果仅需要读取其中一个,稍作修改即可。

1 通过IPConfig命令读取MAC地址

///<summary>
/// 根据截取ipconfig /all命令的输出流获取网卡Mac
///</summary>
///<returns></returns>
publicstatic List<string> GetMacByIPConfig()
{
  List<string> macs =new List<string>();
  ProcessStartInfo startInfo = new ProcessStartInfo("ipconfig", "/all");
  startInfo.UseShellExecute = false;
  startInfo.RedirectStandardInput = true;
  startInfo.RedirectStandardOutput = true;
  startInfo.RedirectStandardError = true;
  startInfo.CreateNoWindow = true;
  Process p = Process.Start(startInfo);
  //截取输出流
  StreamReader reader = p.StandardOutput;
  string line = reader.ReadLine();

while (!reader.EndOfStream)
  {
    if (!string.IsNullOrEmpty(line))
    {
      line = line.Trim();

if (line.StartsWith("Physical Address"))
      {
        macs.Add(line);
      }
    }


    line = reader.ReadLine();
  }

//等待程序执行完退出进程
  p.WaitForExit();
  p.Close();
  reader.Close();
 
  return macs;
}

2 通过WMI读取MAC地址

    1)该方法依赖WMI的系统服务,该服务一般不会被关闭;但如果系统服务缺失或者出现问题,该方法无法取得MAC地址。
 
///<summary>
/// 通过WMI读取系统信息里的网卡MAC
///</summary>
///<returns></returns>
publicstatic List<string> GetMacByWMI()
{
  List<string> macs =new List<string>();
  try
  {
    string mac ="";
    ManagementClass mc =new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection moc = mc.GetInstances();
    foreach (ManagementObject mo in moc)
    {
      if ((bool)mo["IPEnabled"])
      {
        mac = mo["MacAddress"].ToString();
        macs.Add(mac);
      }
    }
    moc =null;
    mc =null;
  }
  catch
  {
  }

return macs;
}

3 通过NetworkInterface读取MAC地址

    1)如果当前的网卡是禁用状态(硬件处于硬关闭状态),取不到该网卡的MAC地址,(您可以通过禁用网卡进行试验)。
    2)如果当前启用了多个网卡,最先返回的地址是最近启用的网络连接的信息
 
//返回描述本地计算机上的网络接口的对象(网络接口也称为网络适配器)。
publicstatic NetworkInterface[] NetCardInfo()
{
  return NetworkInterface.GetAllNetworkInterfaces();
}

///<summary>
/// 通过NetworkInterface读取网卡Mac
///</summary>
///<returns></returns>
publicstatic List<string> GetMacByNetworkInterface()
{
  List<string> macs =new List<string>();
  NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
  foreach (NetworkInterface ni in interfaces)
  {
    macs.Add(ni.GetPhysicalAddress().ToString());
  }
  return macs;
}

4 通过SendARP读取MAC地址

///<summary>
/// 通过SendARP获取网卡Mac
/// 网络被禁用或未接入网络(如没插网线)时此方法失灵
///</summary>
///<param name="remoteIP"></param>
///<returns></returns>
publicstaticstring GetMacBySendARP(string remoteIP)
{
  StringBuilder macAddress =new StringBuilder();

try
  {
    Int32 remote = inet_addr(remoteIP);

Int64 macInfo =new Int64();
    Int32 length =6;
    SendARP(remote, 0, ref macInfo, ref length);

string temp = Convert.ToString(macInfo, 16).PadLeft(12, '0').ToUpper();

int x =12;
    for (int i =0; i <6; i++)
    {
      if (i ==5)
      {
        macAddress.Append(temp.Substring(x -2, 2));
      }
      else
      {
        macAddress.Append(temp.Substring(x -2, 2) +"-");
      }
      x -=2;
    }

return macAddress.ToString();
  }
  catch
  {
    return macAddress.ToString();
  }
}

[DllImport("Iphlpapi.dll")]
privatestaticexternint SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
[DllImport("Ws2_32.dll")]
privatestaticextern Int32 inet_addr(string ip);

5 从注册表读取MAC地址

常规用户可通过读取注册表项Windows Genuine Advantage获取到物理网卡地址。

1)如果注册表项被修改,则无法取得该MAC地址

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Genuine Advantage

C#程序读取MAC地址的方法相关推荐

  1. 几种C#程序读取MAC地址的方法

    原文:几种C#程序读取MAC地址的方法 以下是收集的几种C#程序读取MAC地址的方法,示例中是读取所有网卡的MAC地址,如果仅需要读取其中一个,稍作修改即可. 1 通过IPConfig命令读取MAC地 ...

  2. 修改VMware虚拟机网卡MAC地址的方法总结

    修改MAC地址有两种方法: 一.修改vmx配置文件 修改vmx配置文件的两种方法 1.用文本工具(比如记事本或vi)打开vmx配置文件,然后修改一下几行: ethernet0.generatedAdd ...

  3. java win8 mac地址_Windows8系统下MAC地址修改方法图文教程

    本文介绍了在Windows电脑平台下修改MAC地址的方法,该方法适用于Windows XP.Windows 7和Windows 8电脑.之所以要修改MAC地址,一般是在局域网中,网络管理员设置了MAC ...

  4. xp查看计算机mac地址查询,mac地址查询,教你用dos命令查看mac地址的方法

    如何进行mac地址查询?其实MAC地址也就是(Media Access Control)的缩写,MAC地址的主要作用是定义网络配置的位置.尤其当我们在需要进行设置路由器的时候我们就需要通过Mac来进行 ...

  5. 计算机mac地址怎么读,如何读取MAC地址

    发信人: ffzh (抑), 信区: SJTUnet 标 题: 在WindowsNT下如何读取MAC地址 发信站: 饮水思源站 (Thu Dec 28 10:58:01 2000), 转信 发现已经收 ...

  6. android获取wifi mac地址吗,Android 获取WIFI MAC地址的方法

    1. 经常用法,调用Android的API:WifiManager WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SER ...

  7. 利用UDP(NetBIOS Name Service)来快速获取远程主机MAC地址的方法

    利用UDP(NetBIOS Name Service)来快速获取远程主机MAC地址的方法 import java.io.IOException; import java.net.DatagramPac ...

  8. 同洲EOC局端MAC地址修改方法

    各位大神,请问有知道修改同洲EOC局端(CAM6310)的MAC地址的方法吗,若有知道的烦请回我或者联系我(扣扣1098738360),定有重谢! 转载于:https://blog.51cto.com ...

  9. php获取手机的mac地址,Android手机获取Mac地址的方法

    [导读]这篇文章主要为大家详细介绍了Android手机获取Mac地址的方法,具有一定的参考价值 最常用的方法,通过WiFiManager获取:/** * 通过WiFiManager获取mac地址 *  ...

最新文章

  1. RabbitMQ 和 Kafka 到底怎么选?
  2. 这所高校的快递被机器人承包了,别人家的学校!
  3. hibernate 环境搭建测试
  4. Java中如何实现每天定时对数据库的操作
  5. 013年十大急需的热门IT技能
  6. 心理压力如何测试软件,心理压力测试 缓解压力有什么办法
  7. Servlet实现图片读取显示
  8. 研究员拒绝提前通知,Zoho 匆忙修复一个严重的 0day
  9. 转载 三极管饱和及深度饱和状态的理解和判断!!
  10. begin tran,commit tran和rollback tran的用法
  11. 淘宝2011春季校园招聘笔试试题(回忆版)(附个人简历)
  12. write和read返回值详解
  13. 如何在win10下安装Docker
  14. [云原生专题-1]:总体-云原生初步探究,什么是云原生,云原生的基本特性
  15. 5G LTE窄带物联网(NB-IoT)8
  16. 基于SVM算法的人脸表情识别
  17. 理解矩阵 from孟岩--流星小屋
  18. PowerPMAC技术培训------2、PowerPMAC产品介绍
  19. 视频语音如何翻译成文字?
  20. 基于python,虹软sdk3.0实现的实时人脸识别

热门文章

  1. NYOJ-阶乘之和(贪心)
  2. DSB2017第一名代码尝试运行(记录自用)(三)
  3. 【Machine Learning 二】单变量线性回归,代价函数,梯度下降
  4. VC项目配置基础 (VC6.0 和VC2005)
  5. Linux下企业级分区方案
  6. 解决问题__max 模型白色 材质球换没用
  7. spring session的生命周期
  8. 链栈和递归实现迷宫算法
  9. 网线接法:交叉线、直通线的网线水晶头图解
  10. 记录几条简单的正则表达式