转自:https://www.cnblogs.com/diulela/archive/2012/04/07/2436111.html

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

读网卡MAC地址的几种方法相关推荐

  1. 【转载】取得系统中网卡MAC地址的三种方法

    From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址 ...

  2. 获取MAC地址的四种方法(转)

    https://www.cnblogs.com/zlshmily/p/10058560.html zlshmily 在实际的应用系统中,我们往往会需要在程序运行时获取当前机器的网卡的MAC地址,以便作 ...

  3. Java 跨平台获取 MAC 地址的两种方法

    前言 有时我们因为软件授权或者其它需要获取主机唯一标识而需要获取用户主机的MAC地址,而本文则将介绍如何通过Java来实现跨平台获取MAC地址的两种方法,同时具体的代码也已上传到GitHub. 如果不 ...

  4. android 取mac地址,Android手机获取Mac地址的几种方法,androidmac

    Android手机获取Mac地址的几种方法,androidmac 最常用的方法,通过WiFiManager获取: /** * 通过WiFiManager获取mac地址 * @param context ...

  5. Android设备用指令查看设备mac地址的两种方法

    Android设备可以用如下两种方法查看设备网络信息 1. ifconfig指令 inet addr 是ip地址 HWaddr 是mac地址 wlan0是wifi的mac地址 eth0是设备第一个以太 ...

  6. win7修改mac地址的三种方法

    Win7修改MAC地址方法有以下三种: 方法一:使用Win7MAC地址修改工具 1,只适用于windows7系统的网卡MAC地址修改.XP的可以用,但没做什么测试. 2,部分windows7下的无线网 ...

  7. 给RTL8111网卡固定MAC地址的一种方法

    一些嵌入式主板集成了RTL8111网卡,出于成本原因没有加EEPROM,这样其MAC地址就无法固定,可能是随机数或全0,不利于使用.当然也可以利用脚本给它设置个MAC地址,但有时不记得修改,就有可能存 ...

  8. python 虚拟mac地址_随机生成MAC地址的N种方法

    进期准备在virt cli管理下的KVM增加一个模板脚本,用于主机的快速安装与部署.这里就涉及到mac地址的自动生成.uuid/Guid值的生成.主机名的自动更改等问题.本文着重介绍下N种自动生成MA ...

  9. android 手机固定mac地址吗,Android手机获取Mac地址的几种方法

    最常用的方法,通过WiFiManager获取: /** * 通过WiFiManager获取mac地址 * @param context * @return */ private static Stri ...

  10. android 4g获取mac地址,Android手机获取Mac地址的几种方法

    最常用的方法,通过WiFiManager获取: /** * 通过WiFiManager获取mac地址 * @param context * @return */ private static Stri ...

最新文章

  1. 2012服务器文件加密,Windows Server 2012安全方面的改变_服务器评测与技术-中关村在线...
  2. 一个简单的PHP Web论坛
  3. Metal:对 iOS 中 GPU 编程的高度优化的框架
  4. 使用MonkeyTest对Android客户端进行压力测试 自动化代码
  5. 【代码块】Android代码执行ADB指令
  6. 「Linux」- 安装网易云音乐(Neteast Cloud Music) @20210330
  7. 大华电子秤 手动变价方法
  8. 开源项目工时系统_GitHub - fjp203/timemaker: 定额工时管理系统
  9. STM32f4应用层学习之路(零基础学习STM单片机要注意的是什么? 如何从一个小白入门,你需要掌握哪些知识? 有哪些适合新手的单片机项目?)
  10. 荣耀V20是起点,一波炫酷荣耀潮配又来啦!
  11. 怎么让抖音视频当做铃声android,抖音短视频设置手机铃声教程_苹果手机怎么设置抖音手机铃声_3DM手游...
  12. Python笔记_第四篇_高阶编程_再议装饰器和再议内置函数
  13. 【100%通过率】华为OD机试真题 Java 实现【完美走位】【2022.11 Q4新题】
  14. 微信公众号及CSDN文章爬取
  15. 网关短信php,通过ICQ网关发送手机短信的PHP源程序-PHP教程,PHP应用
  16. VC实现二维码(qrcode)编码源码
  17. Oauth2.0搭建开放平台接口
  18. STL的allocaotr
  19. 计算机毕业设计——基于HTML电商购物商城项目设计与实现---(服装商城 4页 带登录 带动画)
  20. 计算机控制系统信号分析

热门文章

  1. TOM邮箱|国内适合商务人士的邮箱是什么邮箱
  2. pip升级scapy报错It is a distutils installed project and thus we cannot accurately determine which files
  3. ansys18安装以后打不开_ansys18.0安装过程及常见问题解决方案【图文】
  4. SAI绘制滑雪者教程
  5. 基于jsp、ssm网上购物商城系统(带论文)
  6. mouse without borders 一套键鼠控制多台设备
  7. 【云原生】—— 学习云计算应用开发你需要掌握的五大技能
  8. 魔兽,星际,红警,完全对比表
  9. 乱世王者服务器维护,乱世王者微信541区风平浪静开服时间表_乱世王者新区开服预告_第一手游网手游开服表...
  10. 设计模式之里氏宗青出于蓝而胜于蓝