C#获取电脑MAC地址(物理地址)的几种方法
- 方法一:根据截取ipconfig /all命令的输出流获取网卡Mac,支持不同语言编码(容错性最好) (ps:如果想要查看电脑的mac地址,可以按住Win+R键打开dos命令窗口,输入cmd回车,在命令窗口输入ipconfig /all 即可查看本机mac地址)
- 方法二: 通过WMI读取系统信息里的网卡MAC
- 方法三:通过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地址(物理地址)的几种方法相关推荐
- js 获取计算机mac地址,JS获取计算机mac地址以及IP的实现方法
JS获取计算机mac地址以及IP的实现方法 复制代码 代码如下: //这两个是系统里的ActiveX插件 用来获取ip以及物理地址 if(objObject.IPEnabled != nu ...
- 如何使用计算机查询本机网卡信息,本机mac地址查询的三种方法
现在电脑非常流行,大部分的学生以及白领或者说每一个家庭几乎都有一台电脑.不过大家对于电脑的认识却没有这么高的普及度.很多人对于它的了解仅仅停留在使用电脑看视频用软件的层面,对于电脑自身的认识不是很多. ...
- java获取本地mac地址
如何用java代码获取本地mac地址呢? 我们可以通过cmd命令:ipconfig -all 来查看我们电脑上的mac地址是多少. 目录 一.自定义方法获取本地mac地址 二.利用第三方工具类获取本 ...
- android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法
本文实例讲述了Android编程获取设备MAC地址的实现方法.分享给大家供大家参考,具体如下: /** * 获取设备的mac地址 * * @param ac * @param callback * 成 ...
- 用户计算机MAC地址在哪看,怎么查看远程电脑mac地址
有时候,我们使用电脑会遇到想要查看远程电脑mac地址的问题,许多用户不知道怎么办,那么该如何解决查看远程电脑mac地址这个难题呢?下面是学习啦小编收集的关于查看远程电脑mac地址的步骤,希望对你有所帮 ...
- android 获取网卡mac_在安卓6.0(及以上)设备上无法获取无线网卡MAC地址的解决方案...
在安卓6.0以下的设备上,通过WifiManager.getConnectionInfo().getMacAddress()即可获取WLAN物理地址, 而在6.0及以上,以此方式获取到的MAC地址为固 ...
- php获取网卡mac地址吗,php获取网卡MAC地址步骤详解
这次给大家带来php获取网卡MAC地址步骤详解,php获取网卡MAC地址的注意事项有哪些,下面就是实战案例,一起来看一下. php获取网卡的物理地址,即mac地址.<?php /** 获取网卡的 ...
- 获取客户端mac地址 php,js获取客户端mac地址的方法
首先声明,此篇文章纯属标题党.今日QQ群里探讨用JS获取客户端mac地址的方法,众说纷纭,有说行有说不行的,闲着没事儿研究了一下,js确实可以获取到客户端当前电脑的mac地址,代码如下,但这段代码放到 ...
- ARP原理概述——基于WinPcap发送ARP请求数据包获取远程MAC地址
ARP原理概述--基于WinPcap发送ARP请求数据包获取远程MAC地址 ARP协议 ARP概述 ARP工作原理 ARP数据包格式 编写程序发送ARP请求获取本机和远程IP的MAC 注意: ARP协 ...
- java通过ip获取网卡MAC地址
参考:http://www.jb51.net/article/73882.htm /** * 获取MAC地址 * @author * 2011-12 */ public static class Ge ...
最新文章
- 三维空间点进行空间平面拟合原理及MATLAB和C++代码实现
- 原创数据结构算法Flash动画演示课件-Action Script(AS)脚本实现
- C#面向对象设计模式纵横谈
- React Native升级目标SDK
- Jiaozi帮忙买的Secret Garden的票拿到了,谢谢Jiaozi
- C#LeetCode刷题-二叉搜索树
- batchsize一定是2的幂_学习率和batchsize如何影响模型的性能?
- 福特新CEO“泼冷水”,给自动驾驶设立商业化节点是否真的有必要?
- UIAlertView 弹框
- 鸿蒙系统麒麟970芯片支持,受鸿蒙系统影响,众多华为手机或要说再见,包括麒麟970机型!...
- C语言从字符串中提取数字
- ArcGIS影像空值填充\插补
- CA签名是报的错误及解决方法
- oracle 查看进程
- opencv实现阈值分割算法和分水岭算法
- 5V2A移动电源管理芯片脚位兼容IP5306
- 字节 找出最近时间(回溯) C++ 2021-07-17
- 人工智能已经成为全球新一轮科技革命和产业变革的核心驱动力
- 软件测试 三角形问题
- 2021网刃杯CTF ez-sql