1. 方法一:根据截取ipconfig /all命令的输出流获取网卡Mac,支持不同语言编码(容错性最好)   (ps:如果想要查看电脑的mac地址,可以按住Win+R键打开dos命令窗口,输入cmd回车,在命令窗口输入ipconfig /all 即可查看本机mac地址)
  2. 方法二: 通过WMI读取系统信息里的网卡MAC
  3. 方法三:通过NetworkInterface读取网卡MAC

废话不多说,上代码,获取MAC地址的三种方法封装在MacAddressHelper类中,要想调用的话直接 new一个实例,然后调用内部方法即可。

//调用方法
MacAddressHelper macHelper = new MacAddressHelper();
//调用方法一
string mac1 = macHelper.GetMacByIpConfig();
//调用方法二
string mac2 = macHelper.GetMacByWmi();
//调用方法三
string mac3 = macHelper.GetMacByNetworkInterface();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Net.NetworkInformation;
using Microsoft.Win32;
using System.Diagnostics;namespace Common
{/// <summary>/// MAC地址获取帮助类/// </summary>public class MacAddressHelper{///<summary>/// 根据截取ipconfig /all命令的输出流获取网卡Mac,支持不同语言编码(容错性最好)(方法一)///</summary>///<returns></returns>public string GetMacByIpConfig(){List<string> macs = new List<string>();var runCmd = ExecuteInCmd("chcp 437&&ipconfig/all");foreach (var line in runCmd.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(l => l.Trim())){if (!string.IsNullOrEmpty(line)){if (line.StartsWith("Physical Address")){macs.Add(line.Substring(36));}else if (line.StartsWith("DNS Servers") && line.Length > 36 && line.Substring(36).Contains("::")){macs.Clear();}else if (macs.Count > 0 && line.StartsWith("NetBIOS") && line.Contains("Enabled")){return macs.Last();}}}return macs.FirstOrDefault();}///<summary>/// 通过WMI读取系统信息里的网卡MAC(方法二)///</summary>///<returns></returns>public string GetMacByWmi(){try{//创建ManagementClass对象ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();string macAddress = string.Empty;foreach (ManagementObject mo in moc)//遍历获取的集合{if ((bool)mo["IPEnabled"])//判断IPEnabled的属性是否为true{macAddress = mo["MacAddress"].ToString();//获取网卡的序列号}}return macAddress;}catch (Exception e){//这里写异常的处理(最好写入日志文件)return "";}}/// <summary>/// 通过NetworkInterface读取网卡Mac(方法三)/// </summary>/// <returns></returns>public string GetMacByNetworkInterface() {string key = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";string macAddress = string.Empty;try{NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();foreach (NetworkInterface adapter in nics){if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet&& adapter.GetPhysicalAddress().ToString().Length != 0){string fRegistryKey = key + adapter.Id + "\\Connection";RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false);if (rk != null){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();for (int i = 1; i < 6; i++){macAddress = macAddress.Insert(3 * i - 1, ":");}break;}}}}}catch (Exception ex){//这里写异常的处理(最好写入日志文件)  }return macAddress;}/// <summary>/// 执行内部命令(cmd.exe 中的命令)/// </summary>/// <param name="cmdline">命令行</param>/// <returns>执行结果</returns>public static string ExecuteInCmd(string cmdline){using (var process = new Process()){process.StartInfo.FileName = "cmd.exe";process.StartInfo.UseShellExecute = false;process.StartInfo.RedirectStandardInput = true;process.StartInfo.RedirectStandardOutput = true;process.StartInfo.RedirectStandardError = true;process.StartInfo.CreateNoWindow = true;process.Start();process.StandardInput.AutoFlush = true;process.StandardInput.WriteLine(cmdline + "&exit");//获取cmd窗口的输出信息  string output = process.StandardOutput.ReadToEnd();process.WaitForExit();process.Close();return output;}}}
}

C#获取电脑MAC地址(物理地址)的几种方法相关推荐

  1. js 获取计算机mac地址,JS获取计算机mac地址以及IP的实现方法

    JS获取计算机mac地址以及IP的实现方法 复制代码 代码如下: //这两个是系统里的ActiveX插件   用来获取ip以及物理地址 if(objObject.IPEnabled   !=   nu ...

  2. 如何使用计算机查询本机网卡信息,本机mac地址查询的三种方法

    现在电脑非常流行,大部分的学生以及白领或者说每一个家庭几乎都有一台电脑.不过大家对于电脑的认识却没有这么高的普及度.很多人对于它的了解仅仅停留在使用电脑看视频用软件的层面,对于电脑自身的认识不是很多. ...

  3. java获取本地mac地址

    如何用java代码获取本地mac地址呢? 我们可以通过cmd命令:ipconfig -all  来查看我们电脑上的mac地址是多少. 目录 一.自定义方法获取本地mac地址 二.利用第三方工具类获取本 ...

  4. android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法

    本文实例讲述了Android编程获取设备MAC地址的实现方法.分享给大家供大家参考,具体如下: /** * 获取设备的mac地址 * * @param ac * @param callback * 成 ...

  5. 用户计算机MAC地址在哪看,怎么查看远程电脑mac地址

    有时候,我们使用电脑会遇到想要查看远程电脑mac地址的问题,许多用户不知道怎么办,那么该如何解决查看远程电脑mac地址这个难题呢?下面是学习啦小编收集的关于查看远程电脑mac地址的步骤,希望对你有所帮 ...

  6. android 获取网卡mac_在安卓6.0(及以上)设备上无法获取无线网卡MAC地址的解决方案...

    在安卓6.0以下的设备上,通过WifiManager.getConnectionInfo().getMacAddress()即可获取WLAN物理地址, 而在6.0及以上,以此方式获取到的MAC地址为固 ...

  7. php获取网卡mac地址吗,php获取网卡MAC地址步骤详解

    这次给大家带来php获取网卡MAC地址步骤详解,php获取网卡MAC地址的注意事项有哪些,下面就是实战案例,一起来看一下. php获取网卡的物理地址,即mac地址.<?php /** 获取网卡的 ...

  8. 获取客户端mac地址 php,js获取客户端mac地址的方法

    首先声明,此篇文章纯属标题党.今日QQ群里探讨用JS获取客户端mac地址的方法,众说纷纭,有说行有说不行的,闲着没事儿研究了一下,js确实可以获取到客户端当前电脑的mac地址,代码如下,但这段代码放到 ...

  9. ARP原理概述——基于WinPcap发送ARP请求数据包获取远程MAC地址

    ARP原理概述--基于WinPcap发送ARP请求数据包获取远程MAC地址 ARP协议 ARP概述 ARP工作原理 ARP数据包格式 编写程序发送ARP请求获取本机和远程IP的MAC 注意: ARP协 ...

  10. java通过ip获取网卡MAC地址

    参考:http://www.jb51.net/article/73882.htm /** * 获取MAC地址 * @author * 2011-12 */ public static class Ge ...

最新文章

  1. 三维空间点进行空间平面拟合原理及MATLAB和C++代码实现
  2. 原创数据结构算法Flash动画演示课件-Action Script(AS)脚本实现
  3. C#面向对象设计模式纵横谈
  4. React Native升级目标SDK
  5. Jiaozi帮忙买的Secret Garden的票拿到了,谢谢Jiaozi
  6. C#LeetCode刷题-二叉搜索树
  7. batchsize一定是2的幂_学习率和batchsize如何影响模型的性能?
  8. 福特新CEO“泼冷水”,给自动驾驶设立商业化节点是否真的有必要?
  9. UIAlertView 弹框
  10. 鸿蒙系统麒麟970芯片支持,受鸿蒙系统影响,众多华为手机或要说再见,包括麒麟970机型!...
  11. C语言从字符串中提取数字
  12. ArcGIS影像空值填充\插补
  13. CA签名是报的错误及解决方法
  14. oracle 查看进程
  15. opencv实现阈值分割算法和分水岭算法
  16. 5V2A移动电源管理芯片脚位兼容IP5306
  17. 字节 找出最近时间(回溯) C++ 2021-07-17
  18. 人工智能已经成为全球新一轮科技革命和产业变革的核心驱动力
  19. 软件测试 三角形问题
  20. 2021网刃杯CTF ez-sql

热门文章

  1. Android使用FtpServer开启FTP服务端
  2. 7-8月博乐推荐文章
  3. 条件与循环Phython
  4. php 一次性动态口令,一次性口令 (OTP) 动态口令身份认证
  5. 美团大众点评合并:背后技术力量的对比回顾【转载+整理】
  6. 命令行基础-vim编辑器
  7. 求解一元二次方程,包含复数解
  8. 怎样从任务管理器打开计算机,怎么打开任务管理器|任务管理器在哪里打开
  9. C专家编程 第9章 再论数组 9.6 C语言的多维数组
  10. 【计算机网络】5G网络结构————5G技术大有可为