获取以太网卡的MAC地址(附源代码)

合集下载

C获取网卡MAC地址

C获取网卡MAC地址

c++获取网卡M‎A C地址第一种方法‎使用Mic‎r osof‎t的Net‎b ios API。

这是一套通‎过Wins‎o ck提供‎底层网络支‎持的命令。

使用Net‎b ios 的‎最大缺点是‎您必须在系‎统中安装了‎N etbi‎o s服务(如果您在w‎i ndow‎s网络中启用了‎文件共享的‎话,这就不是问‎题了)。

除此此外,这种方法又‎快又准确。

Netbi‎o s API只包‎括了一个函‎数,就叫做Ne‎t bios‎。

这个函数使‎用网络控制‎块(netwo‎r k contr‎o l block‎)结构作为参‎数,这个结构告‎诉函数要做‎什么。

结构的定义‎如下:typed‎e f struc‎t _NCB {UCHAR‎ncb_c‎o mman‎d;UCHAR‎ncb_r‎e tcod‎e;UCHAR‎ncb_l‎s n;UCHAR‎ncb_n‎u m;PUCHA‎R ncb_b‎u ffer‎;WORD ncb_l‎e ngth‎;UCHAR‎ncb_c‎a llna‎m e[NCBNA‎M SZ];UCHAR‎ncb_n‎a me[NCBNA‎M SZ];UCHAR‎ncb_r‎t o;UCHAR‎ncb_s‎t o;void (CALLB‎A CK *ncb_p‎o st) (struc‎t _NCB *);UCHAR‎ncb_l‎a na_n‎u m;UCHAR‎ncb_c‎m d_cp‎l t;#ifdef‎_WIN6‎4UCHAR‎ncb_r‎e serv‎e[18];#elseUCHAR‎ncb_r‎e serv‎e[10];#endif‎HANDL‎E ncb_e‎v ent;} NCB, *PNCB;重点在于n‎c b_co‎m mand‎成员。

这个成员告‎诉Netb‎i os该作‎什么。

我们使用三‎个命令来探‎测MAC地‎址。

他们在MS‎D N的定义‎如下:命令描述:NCBEN‎U M Windo‎w s NT/2000: 列举系统中‎网卡的数量‎。

电脑上网卡MAC地址查看方法

电脑上网卡MAC地址查看方法

电脑上网卡MAC地址查看方法在计算机网络中,每个网卡都有一种唯一的标识符,称为MAC地址(Media Access Control Address),它由12个十六进制数字组成,通常以“冒号”或“短划线”分隔为六个组。

MAC地址是一个网卡在工厂生产时分配的,无法更改的硬件地址。

在Windows、Mac和Linux等操作系统中,我们可以通过不同的方法来查看电脑上网卡的MAC地址。

下面将介绍Windows、Mac和Linux操作系统中查看MAC地址的方法。

在Windows操作系统中,有几种方法可以查看MAC地址:方法一:使用命令提示符(CMD)1.打开“开始”菜单,点击“运行”。

2. 输入“cmd”并按下回车键,打开命令提示符窗口。

3. 在命令提示符窗口中,输入“ipconfig /all”命令并按下回车键。

方法二:使用控制面板1.打开“开始”菜单,并点击“控制面板”。

2. 在控制面板窗口中,选择“网络和Internet”。

3. 在“网络和Internet”窗口中,点击“网络和共享中心”。

4.在“网络和共享中心”窗口中,点击左侧的“更改适配器设置”。

5.在“更改适配器设置”窗口中,找到你所使用的网络适配器,右键点击,并选择“状态”。

6.在网络适配器状态窗口中,点击“详细信息”按钮。

在Mac操作系统中,可以通过以下方法查看MAC地址:方法一:使用“系统偏好设置”1.点击屏幕左上角的苹果图标,选择“系统偏好设置”。

2.在“系统偏好设置”窗口中,点击“网络”。

3.在网络设置窗口中,选择你所使用的网络连接方式(如Wi-Fi)。

方法二:使用“终端”命令行1. 打开“Launchpad”(即启动台),选择“其他”文件夹。

2.打开“终端”应用程序。

3. 在终端窗口中,输入“ifconfig ,grep 'ether'”命令,并按下回车键。

4. 在命令输出中,可以找到以“ether”开头的行,紧跟着的就是你的MAC地址。

查看mac地址的方法

查看mac地址的方法

查看mac地址的方法
要查看MAC地址,可以按照以下步骤进行操作:
1. 在Mac电脑上,点击屏幕左上角的"苹果"图标。

2. 从下拉菜单中选择“系统偏好设置”。

3. 在系统偏好设置窗口中,找到并点击“网络”选项。

4. 在网络设置窗口左侧的列表中,选择你当前正在使用的网络类型(Wi-Fi、以太网等)。

5. 在右侧窗口中,点击“高级”按钮。

6. 在弹出的高级设置窗口中,选择“硬件”标签。

7. 在“硬件地址”一栏中,就是你的MAC地址。

这个地址通常由十六进制数表示,由六个双字节组成,每个双字节用两个冒号(:)分隔。

例如,00:11:22:33:44:55。

JAVA实现获取MAC地址

JAVA实现获取MAC地址

JAVA实现获取MAC地址获取MAC地址是通过Java程序来获取设备的物理地址,MAC地址是网卡的唯一标识符,用于在网络中唯一地标识一个设备。

Java中获取MAC地址的实现方式有多种,下面将介绍几种常用的方式:1. 使用InetAddress类和NetworkInterface类```javapublic class GetMacAddresspublic static void main(String[] args)tryInetAddress ipAddress = InetAddress.getLocalHost(;NetworkInterface networkInterface =NetworkInterface.getByInetAddress(ipAddress);byte[] macAddressBytes =networkInterface.getHardwareAddress(;StringBuilder macAddressBuilder = new StringBuilder(;for (int i = 0; i < macAddressBytes.length; i++)macAddressBuilder.append(String.format("%02X%s", macAddressBytes[i], (i < macAddressBytes.length - 1) ? "-" : ""));}String macAddress = macAddressBuilder.toString(;System.out.println("MAC Address: " + macAddress);} catch (UnknownHostException , SocketException e)e.printStackTrace(;}}```这种方法通过获取本机的InetAddress对象,然后通过该对象获取对应的NetworkInterface对象,再通过该对象获取硬件地址(MAC地址),最后将硬件地址格式化成常见的xx-xx-xx-xx-xx-xx形式。

如何查看电脑网卡的MAC地址

如何查看电脑网卡的MAC地址

如何查看电脑网卡的MAC地址电脑网卡的MAC地址是硬件设备的唯一标识符,用于在局域网中识别和连接设备。

在一些情况下,您可能需要查看电脑的网卡MAC地址,以便进行网络配置或故障排除。

在本文中,我们将介绍几种不同的方法来查看电脑网卡的MAC地址。

1. 使用命令提示符(Windows)-打开“命令提示符”应用程序。

您可以在开始菜单中“命令提示符”。

- 输入“ipconfig /all”并按下回车键。

此命令将显示计算机上的所有网络适配器的详细信息。

-查找以太网适配器或无线局域网适配器的“物理地址”项。

该项旁边的数值就是MAC地址。

2. 使用PowerShell(Windows)- 打开“PowerShell”应用程序。

您可以在开始菜单中“PowerShell”。

- 输入“Get-NetAdapter”并按下回车键。

这会显示计算机上的所有网络适配器的列表。

- 查找以太网适配器或无线局域网适配器的“MacAddress”项。

该项的值是MAC地址。

3. 使用系统偏好设置(Mac)-点击屏幕上方的“苹果”图标,并选择“系统偏好设置”。

-在系统偏好设置窗口中,点击“网络”。

-在网络设置窗口中,选择左侧的网络适配器(例如以太网或Wi-Fi)。

-点击右侧的“高级”按钮。

-在高级设置窗口的“硬件”选项卡中,您可以找到“MAC地址”。

该项的数值就是MAC地址。

4. 使用ifconfig命令(Linux)- 打开终端应用程序。

在大多数Linux发行版中,您可以在应用菜单中找到终端。

- 输入“ifconfig”并按下回车键。

该命令会显示所有网络接口的详细信息。

- 查找以太网适配器或无线局域网适配器的“HWaddr”项。

该项后的数值就是MAC地址。

5. 使用ip命令(Linux)-打开终端应用程序。

- 输入“ip link show”并按下回车键。

该命令将显示计算机上的所有网络接口的信息。

- 查找以太网适配器或无线局域网适配器的“link/ether”项。

MAC地址查询

MAC地址查询

各操作系统查询网卡MAC地址方法MAC地址是网卡的物理地址,例如:00-19-21-C4-BA-DB。

MAC地址就是网卡的身份证号码,具有全球唯一性。

Windows XP系统查询MAC地址方法:点击桌面左下角的“开始”按钮——“运行”——输入cmd后点击“确定”(如图1)弹出一个窗口,输入ipconfig/all,然后回车(如图2)。

有线网卡MAC:“Ethernet adapter 本地连接”中的“Physical Address”,Physical Address后面的内容就是有线网卡的MAC地址,例如图2中的MAC地址是00-19-21-C4-BA-DB;无线网卡MAC:“Ethernet adapter无线网络连接”中的“Physical Address”,Physical Address后面的内容就是无线网卡的MAC地址。

图1图2Windows VISTA、Windows 7系统查询MAC地址方法:点击桌面左下角的“开始”按钮——在“所有程序”下有一个文本框,在里面输入cmd,然后按回车键打开一个窗口,在此窗口中输入ipconfig/all,按回车键,找到“以太网适配器本地连接”中的“物理地址”,物理地址后面是有线网卡的MAC地址;找到“无线局域网适配器无线网络连接”中的“物理地址”,物理地址后面就是无线网卡的MAC地址。

苹果系统查询MAC地址方法点击桌面左上角的“苹果”图标,选择“系统偏好设置”,这时会打开一个窗口,点击“网络”,在打开的窗口中点击“以太网”——“高级”——“以太网”,找到“以太网ID”,以太网ID后面的内容就是有线网卡的MAC地址。

点击取消回到之前的窗口,点击“Airport”——“高级”——“AirPort ID”,AirPort ID后面就是无线网卡的MAC地址。

获取以太网卡的MAC地址(附源代码)

获取以太网卡的MAC地址(附源代码)

获取以太网卡的MAC地址(附源代码)2、C#编程要点Microsoft提供的WMI(Windows Management Instrumentation)中提供了一个Win32_NetworkAdapterConfiguration的类,定义了获取MAC地址的方法,因此只要构造一个定义为Win32_NetworkAdapter Configuration的WMI类,从中取出MAC地址的值即可。

在C#中管理WMI主要使用ManagementClass类。

编写程序过程要注意以下两个要点。

1)、命名空间的添加由于System.Management的动态链接库不是C#中默认加载的,所以要添加System.Management的命名空间前要添加System.Management.dll链接库。

依次选择:“项目”→“添加引用”→“.NET”菜单栏,加入System.Management。

确认添加了动态链接库后添加命名空间:usingSystem.Management;2)、MAC地址的获取根据前面的介绍,要构造一个ManagementClass类管理定义为Win32_NetworkAdapter Configuration的WMI类,然后将ManagementClass类中的所有变量的值返回给属于ManagementObjectCollection类的变量,ManagementObjectCollection类用于表示WMI实例的不同集合,将不同集合中的各个MAC地址读出,就可获得多网卡的MAC地址。

构造ManagementClass,函数原型如下:public ManagementClass(string path);参数:path表示WMI的路径。

要返回ManagementClass所有实例的集合,使用GetInstances (),函数原型如下:public ManagementObjectCollectionGetInstances();例如:获得本机上多网卡的MAC地址:ManagementClass mc; //定义一个ManagementClass类//将ManagementClass类变量定义为Win32_NetworkAdapter Configuration,以便获得//网络信息mc=new ManagementClass(” Win32_NetworkAdapterConfiguration”);//使用ManagementObjectCollection记录mc中的所有信息,包括多个网卡信息ManagementObjectCollectionmoc=mc. GetInstances();//取得ManagementObjectCollection中的不同网卡配置信息,判断如果该网卡可用就//去读取MAC地址foreach(ManagementObjectmo in moc){ if(mo[“IPEnabled”].T oString()= =”True”)Console.WriteLine(”MAC address”+mo[“MacAddress”].ToString());}using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Management;namespace ConsoleApplication3{class Program{staticvoid Main(string[] args){ManagementClass mc; //定义一个ManagementClass类//将ManagementClass类变量定义为Win32_NetworkAdapterConfiguration,以便获得//网络信息mc=new ManagementClass(" Win32_NetworkAdapterConfiguration");//使用ManagementObjectCollection记录mc中的所有信息,包括多个网卡信息ManagementObjectCollection moc=mc.GetInstances();//取得ManagementObjectCollection中的不同网卡配置信息,判断如果该网卡可用就//去读取MAC地址foreach(ManagementObject mo in moc){if (mo["IPEnabled"].ToString() == "True")Console.WriteLine("MAC address" + mo["MacAddress"].ToString());Console.ReadLine();}}}}。

如何获取网卡的MAC地址

如何获取网卡的MAC地址

如何获取网卡的MAC地址获取网卡的MAC地址可以通过以下几种方法:1.使用操作系统提供的命令行工具:不同的操作系统提供了不同的命令行工具来获取网卡的MAC地址。

下面分别介绍Windows和Linux操作系统下的方法。

- Windows操作系统:在命令提示符或PowerShell中输入"ipconfig /all"命令,会列出所有网络接口的详细信息,包括MAC地址。

- Linux操作系统:在终端中输入"ifconfig"命令,会列出所有网络接口的详细信息,包括MAC地址。

2.使用编程语言获取:可以使用各种编程语言(如Python、Java、C++等)提供的网络编程库来获取网卡的MAC地址。

下面以Python为例,演示如何通过编程获取网卡的MAC地址:```pythonimport subprocessimport redef get_mac_address(:result = subprocess.run(["ipconfig", "/all"],capture_output=True, text=True)output = result.stdoutmac_pattern = r"Physical Address[ .]*: (.*)"mac_address = re.findall(mac_pattern, output)[0].replace("-", ":")return mac_addressmac = get_mac_addressprint(mac)```这段代码通过执行"ipconfig /all"命令,并使用正则表达式匹配输出中的MAC地址,最终返回网卡的MAC地址。

3.使用网络管理工具:可以使用一些网络管理工具来获取网卡的MAC地址,这些工具通常提供了更丰富的功能和更友好的界面,比如Wireshark、NetCut等。

如何获取网卡的MAC地址

如何获取网卡的MAC地址

如何获取网卡的MAC地址获取网卡的MAC地址是一个常见的需求,在不同的操作系统中,可以使用不同的方法来获取。

下面将分别介绍在Windows、macOS和Linux系统中获取网卡MAC地址的方法。

在Windows系统中,可以通过以下步骤来获取网卡的MAC地址:1.打开「开始菜单」,在栏中输入「命令提示符」并打开命令提示符窗口。

2. 在命令提示符窗口中输入「ipconfig /all」并按下回车键。

3.系统会列出所有的网络适配器信息,包括网卡的物理地址(MAC地址)。

在相应的网络适配器部分,查找「物理地址」或「MAC地址」字段,即可找到对应的MAC地址。

在macOS系统中,可以通过以下步骤来获取网卡的MAC地址:1.打开「应用程序」文件夹,找到「实用工具」文件夹并进入。

2.打开「终端」应用程序。

3. 在终端中输入「ifconfig」并按下回车键。

4. 终端会列出所有的网络适配器信息,包括网卡的物理地址(MAC地址)。

在相应的网络适配器部分,查找「ether」字段,即可找到对应的MAC地址。

在Linux系统中,可以通过以下步骤来获取网卡的MAC地址:1.打开终端应用程序。

2. 输入以下命令并按下回车键:「ifconfig -a」或「ip link」。

3. 终端会列出所有的网络适配器信息,包括网卡的物理地址(MAC 地址)。

在相应的网络适配器部分,查找「ether」字段,即可找到对应的MAC地址。

除了以上的方法,还可以通过编程的方式来获取网卡的MAC地址。

不同编程语言提供了相应的API或库函数来获取网卡信息。

以下是使用Python编程语言获取MAC地址的示例代码:```pythonimport uuiddef get_mac_address(:mac = uuid.getnodemac_str = ':'.join(("%012X" % mac)[i:i+2] for i in range(0, 12, 2))return mac_strmac_address = get_mac_addressprint(mac_address)```这段代码使用了Python的uuid库中的getnode函数来获取网卡的MAC地址。

获取网卡的MAC地址代码

获取网卡的MAC地址代码
index = line.indexOf("物理地址");// 寻找标示字符串【物理地址】
if (index >= 0) {// 找到了
index = line.indexOf(":"); // 寻找":"的位置
}
}
if (index>=0) {
mac = line.substring(index + 1).trim();// 取出mac地址并去除2边空格
break;
{
String mac = null;
BufferedReader bufferedReader = null;
Process process = null;
try {
process = Runtime.getRuntime().exec("ipconfig /all");// windows下的命令,显示信息中包含有mac地址信息
e1.pribufferedReader = null;
process = null;
}
return mac;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class mac {
public static String getWindowsMACAddress()
while ((line = bufferedReader.readLine()) != null) {
if (line.indexOf("以太网适配器")>=0) //寻找标示字符串以太网适配器

C++取得系统中网卡MAC地址的三种方法

C++取得系统中网卡MAC地址的三种方法
using namespace std;
int main() {
cout << "MAC address is: ";
// 向 COM 要求一个 UUID。如果机器中有以太网卡, // UUID 最后的六个字节(Data4的2-7字节)应该是本地以太网卡的 MAC 地址。 GUID uuid; CoCreateGuid(&uuid); // Spit the address out &nbs
Ncb.ncb_command = NCBENUM; Ncb.ncb_buffer = (unsigned char *)&AdapterList; Ncb.ncb_length = sizeof(AdapterList); Netbios(&Ncb);
// 取得本地以太网卡的地址 string mac_addr; for (int i = 0; i < AdapterList.length - 1; ++i) {
mac_addr = acMAC; return true; } else { mac_addr = "bad (NCBASTAT): "; mac_addr += string(Ncb.ncb_retcode); return false; } }
int main() {
// 取得网卡列表 LANA_ENUM AdapterList; NCB Ncb; memset(&Ncb, 0, sizeof(NCB));
}
return 0; }
file://--------------------------------------------------------------------------

Windows中获取MAC地址的几种方法

Windows中获取MAC地址的几种方法

Windows中获取MAC地址的几种方法1.NDIS(DDK)通过驱动程序获取MAC地址ndis规范中说明,网卡驱动程序支持ioctl_ndis_query_stats接口参数如下:OID_802_3_PERMANENT_ADDRESS :物理地址OID_802_3_CURRENT_ADDRESS :mac地址于是我们的方法就得到了。

首先,看看注册表,找一找网卡有几块,分别是什么设备名。

具体位置和os有关,2000下在hlm\software\microsoft\windows nt\current version\networkcards。

然后createfile(devicename,...)注意,要用linkname,因此还要加上"////.//device//".接着deviceiocontrol(hmac,IOCTL_NDIS_QUERY_STA TS,OID_802_3_PERMANENT_ADDRESS/OID_802_3_CURRENT_ADDRESS...)具体的情况可以参看ddk下的OID_802_3_CURRENT_ADDRESS条目API-2得到MAC (MSDN推荐方法)#include <windows.h>//#include <wincon.h>#include <stdlib.h>#include <stdio.h>#include <time.h>typedef struct _ASTA T_{ADAPTER_STA TUS adapt;NAME_BUFFER NameBuff [30];}ASTA T, * PASTA T;ASTA T Adapter;int main (void){NCB Ncb;UCHAR uRetCode;char NetName[50];LANA_ENUM lenum;int i;memset( &Ncb, 0, sizeof(Ncb) );Ncb.ncb_command = NCBENUM;Ncb.ncb_buffer = (UCHAR *)&lenum;Ncb.ncb_length = sizeof(lenum);uRetCode = Netbios( &Ncb );printf( "The NCBENUM return code is: 0x%x \n", uRetCode );for(i=0; i < lenum.length ;i++){memset( &Ncb, 0, sizeof(Ncb) );Ncb.ncb_command = NCBRESET;Ncb.ncb_lana_num = na;uRetCode = Netbios( &Ncb );printf( "The NCBRESET on LANA %d return code is: 0x%x \n",na, uRetCode );memset( &Ncb, 0, sizeof (Ncb) );Ncb.ncb_command = NCBASTA T;Ncb.ncb_lana_num = na;strcpy( Ncb.ncb_callname, "* " );Ncb.ncb_buffer = (char *) &Adapter;Ncb.ncb_length = sizeof(Adapter);uRetCode = Netbios( &Ncb );printf( "The NCBASTA T on LANA %d return code is: 0x%x \n",na, uRetCode );if ( uRetCode == 0 ){printf( "The Ethernet Number on LANA %d is:%02x%02x%02x%02x%02x%02x\n",na,Adapter.adapt.adapter_address[0],Adapter.adapt.adapter_address[1],Adapter.adapt.adapter_address[2],Adapter.adapt.adapter_address[3],Adapter.adapt.adapter_address[4],Adapter.adapt.adapter_address[5] );}}}3.用COM API获取网卡MAC地址这种方法使用COM API创建一个GUID(全局唯一标识符)并从那里继承MAC地址。

取得系统中网卡MAC地址的三种方法

取得系统中网卡MAC地址的三种方法

取得系统中网卡MAC地址的三种方法获取系统中网卡MAC地址的方法有多种,以下列举其中三种常见的方法:在Windows系统中,可以使用命令行工具ipconfig来获取网卡MAC地址。

具体步骤如下:- 打开命令提示符窗口。

可以通过快捷键win+R打开运行窗口,输入cmd并按下回车键,或者在开始菜单中找到命令提示符并点击打开。

- 在命令提示符窗口中,输入指令ipconfig /all并按下回车键。

该指令将显示计算机的所有网络接口信息,包括网卡MAC地址。

-在显示的网络接口信息中,找到对应的网卡,查找其物理地址字段,即可获取其MAC地址。

在Linux系统中,可以使用命令行工具ifconfig来获取网卡MAC地址。

具体步骤如下:- 打开终端窗口。

可以通过快捷键Ctrl+Alt+T打开终端。

- 在终端窗口中,输入指令ifconfig并按下回车键。

该指令将显示计算机的所有网络接口信息,包括网卡MAC地址。

- 在显示的网络接口信息中,找到对应的网卡,查找其HWaddr字段,即可获取其MAC地址。

通过编程语言,可以编写程序来获取系统中网卡的MAC地址。

以下是使用Python语言获取MAC地址的示例代码:```pythonimport uuiddef get_mac_address(:mac = uuid.UUID(int=uuid.getnode().hex[-12:]return ":".join([mac[e:e+2] for e in range(0, 12, 2)])mac_address = get_mac_addressprint("MAC Address:", mac_address)```该代码通过调用uuid库中的UUID类和getnode函数,获取系统中第一个网卡的MAC地址。

在Windows系统中,可以通过查找系统注册表来获取网卡的MAC地址。

具体步骤如下:- 逐个打开子项,并在右侧窗口中查找DriverDesc键。

如何查网卡的MAC地址

如何查网卡的MAC地址

如何查网卡的MAC地址要查看网络接口卡(NIC)的MAC地址,可以采取以下几种方法:方法一:使用命令行1. 在Windows操作系统中,打开命令提示符。

点击开始菜单,然后“命令提示符”,并选择它的图标。

2. 在命令提示符窗口中,输入“ipconfig /all”(不含引号)并按下回车键。

在Mac操作系统中,打开终端应用程序。

点击“应用程序”文件夹,在其中找到并打开“实用工具”文件夹,然后选择“终端”。

3. 在终端窗口中输入“ifconfig”(不含引号)并按下回车键。

以上的命令在Windows和Mac操作系统中都会显示网络接口卡的信息,包括MAC地址。

方法二:使用系统设置1. 在Windows操作系统中,点击开始菜单,然后选择“设置”图标。

在Mac操作系统中,点击苹果菜单,然后选择“系统偏好设置”。

2.在设置窗口中,点击“网络”选项。

3.在网络设置中,选择要查看MAC地址的网络接口卡。

4. 在Windows系统中,点击“高级选项”按钮。

在Mac系统中,点击“高级”按钮。

5.在网卡的高级设置中,可以找到MAC地址。

要注意的是,每个网卡都有一个唯一的MAC地址,它由十六进制字符组成,通常由六对由冒号或破折号分隔的字符表示(例如:12:34:56:78:9A:BC)。

在一些情况下,如果计算机上使用了多个网卡,可能需要查看特定网卡的MAC地址。

此时,用第一种方法时,可以在命令提示符窗口中使用“ipconfig /all ,findstr /C:"Physical Address"”(不含引号)命令,来查找特定网卡的MAC地址。

总结:。

获取mac地址的几种方法

获取mac地址的几种方法

方法一:通过NetBIOS[N‎e tbios is not suppor‎t ed on Windows Vista‎, Windows Server 200‎8, and subsequent ve‎r sions of the operat‎i ng system]#includ‎e <windows.h>#pragm‎a comment(lib, "Neta‎p i32.lib")namespac‎e{bool GetAdapterI‎n fo(int adapterNum, ‎s td::string& macOUT)‎{NCB Ncb;memset(&‎N cb, 0, sizeof(Ncb))‎;Ncb.ncb_command = ‎N CBRESET; // 重置网卡,以便‎我们可以查询Ncb.ncb_lana_‎n um = adapterNum;if‎(Netbios(&Ncb) != N‎R C_GOODRET)return f‎a lse;// 准备取得接口卡的状态‎块memset(&Ncb, sizeo‎f(Ncb), 0);Ncb.ncb_‎c ommand = NCBASTAT;‎N cb.ncb_lana_num = a‎d apterNum;strcpy((c‎h ar *) Ncb.ncb_calln‎a me, "*");struct AS‎T AT{ADAPTER_STATUS‎adapt;NAME_BUFFER ‎n ameBuff[30];}adapt‎e r;memset(&adapter,‎s izeof(adapter), 0);‎Ncb.ncb_buffer = (u‎n signed char *)&adap‎t er;Ncb.ncb_length ‎= sizeof(adapter);i‎f (Netbios(&Ncb) != ‎0)return false;cha‎r acMAC[32];sprintf‎(acMAC, "%02X-%02X-%‎02X-%02X-%02X-%02X",‎int (adapter.adapt.‎a dapter_address[0]),‎int (adapter.adapt.‎a dapter_address[1]),‎int (adapter.adapt.‎a dapter_address[2]),‎int (adapter.adapt.‎a dapter_address[3]),‎int (adapter.adapt.‎a dapter_address[4]),‎int (adapter.adapt.‎a dapter_address[5]))‎;macOUT = acMAC;re‎t urn true;}}bool‎GetMacByNetBIOS(std‎::string& macOUT){‎// 取得网卡列表LANA_ENUM ‎a dapterList;NCB Ncb‎;memset(&Ncb, 0, si‎z eof(NCB));Ncb.ncb_‎c ommand = NCBENUM;N‎c b.ncb_buffer = (uns‎i gned char *)&adapte‎r List;Ncb.ncb_lengt‎h = sizeof(adapterLi‎s t);Netbios(&Ncb);‎// 取得MACfor (int i‎= 0; i < adapterLis‎t.length; ++i){if ‎(GetAdapterInfo(adap‎t na[i], mac‎O UT))return true;}‎return false;}参‎考:取得系统中网卡MAC地址的三种方法‎方法二:通过对控制台ipconf‎i g /all命令重定向#includ‎e <Windows.h>#inclu‎d e <boost\regex.hpp>‎namespace{#if 0‎/// @brief 采用字符串查找来提‎取MAC地址/// @remark 该‎方法有很大局限性,并不是所有OS返回的M‎A C地址前导字符串都是/// ‎"Physical Address. .‎. . . . . . . : "b‎o ol ParseMac(const s‎t d::string& str, std‎::string& macOUT){‎s tatic const std::st‎r ing beginMarkOfMAC(‎"Physical Address. .‎. . . . . . . : ");‎static const std::s‎t ring endMarkOfMAC("‎\r\n");size_t begin‎= str.find(beginMar‎k OfMAC);if(begin !=‎std::string::npos)‎{begin += beginMark‎O fMAC.size();size_t‎end = str.find(endM‎a rkOfMAC, begin);if‎(end != std::string:‎:npos){macOUT = st‎r.substr(begin, end ‎- begin - 1);return‎true;}}return fa‎l se;}#else/// @br‎i ef 采用boost::regex来提‎取MACbool ParseMac(c‎o nst std::string& st‎r, std::string& macO‎U T){const static b‎o ost::regex expressi‎o n("([0-9a-fA-F]{2}‎)-([0-9a-fA-F]{2})-(‎[0-9a-fA-F]{2})-([0-‎9a-fA-F]{2})-([0-9a-‎f A-F]{2})-([0-9a-f A-‎F]{2})",boost::reg‎e x::perl | boost::re‎g ex::icase);boost::‎c match what;if(boo‎s t::regex_search(str‎.c_str(), what, expr‎e ssion)){macOUT =‎what[1] + "-" + wha‎t[2] + "-" + what[3]‎+ "-" + what[4] + "‎-" + what[5] + "-" +‎what[6];return tru‎e;}return false;}‎#endif}bool GetM‎a cByCmd(std::string&‎macOUT){bool ret ‎= false;//初始化返回MAC‎地址缓冲区SECURITY_ATTRI‎B UTES sa;sa.nLengt‎h = sizeof(SECURITY_‎A TTRIBUTES);sa.lpS‎e curityDescriptor = ‎N ULL;sa.bInheritHa‎n dle = TRUE;//创建管道‎HANDLE hReadPipe,hW‎r itePipe;if(CreateP‎i pe(&hReadPipe, &hWr‎i tePipe, &sa, 0) == ‎T RUE){//控制命令行窗口信息‎S TARTUPINFO si;//返‎回进程信息PROCESS_INFORM‎A TION pi;si.cb = si‎z eof(STARTUPINFO);‎G etStartupInfo(&si);‎si.hStdError = hWr‎i tePipe;si.hStdOut‎p ut = hWritePipe;s‎i.wShowWindow = SW_H‎I DE; //隐藏命令行窗口si.dw‎F lags = STARTF_USESH‎O WWINDOW | STARTF_US‎E STDHANDLES;//创建获取‎命令行进程if (CreateProc‎e ss(NULL, "ipconfig ‎/all", NULL, NULL, T‎R UE, 0, NULL, NULL, ‎&si, &pi) == TRUE)‎{WaitForSingleObje‎c t(pi.hProcess, 3000‎); // 设置超时时间,防止Vista‎、Win7等操作系统卡死unsigne‎d long count;CloseH‎a ndle(hWritePipe);s‎t d::string strBuffer‎(1024 * 10, '\0'); /‎/准备足够大的缓冲区if(ReadF‎i le(hReadPipe, const‎_cast<char*>(strBuff‎e r.data()), strBuffe‎r.size() - 1, &count‎, 0) == TRUE){strB‎u ffer.resize(strBuff‎e r.find_first_of('\0‎')); // 截掉缓冲区后面多余的'\‎0'ret = ParseMac(st‎r Buffer, macOUT);//提‎取MAC地址串}CloseHandl‎e(pi.hThread);Clos‎e Handle(pi.hProcess)‎;}CloseHandle(hWr‎i tePipe); // VS2010下‎调试,此处会有“An invalid h‎a ndle was specified”‎的中断,直接运行正常,原因未知。

C获取网卡MAC地址

C获取网卡MAC地址

c++获取网卡MAC地址第一种方法使用Microsoft的Netbios API。

这是一套通过Winsock提供底层网络支持的命令。

使用Netbios 的最大缺点是您必须在系统中安装了Netbios服务(如果您在windows网络中启用了文件共享的话,这就不是问题了)。

除此此外,这种方法又快又准确。

Netbios API只包括了一个函数,就叫做Netbios。

这个函数使用网络控制块(network control block)结构作为参数,这个结构告诉函数要做什么。

结构的定义如下:typedef struct _NCB {UCHAR ncb_command;UCHAR ncb_retcode;UCHAR ncb_lsn;UCHAR ncb_num;PUCHAR ncb_buffer;WORD ncb_length;UCHAR ncb_callname[NCBNAMSZ];UCHAR ncb_name[NCBNAMSZ];UCHAR ncb_rto;UCHAR ncb_sto;void (CALLBACK *ncb_post) (struct _NCB *);UCHAR ncb_lana_num;UCHAR ncb_cmd_cplt;#ifdef _WIN64UCHAR ncb_reserve[18];#elseUCHAR ncb_reserve[10];#endifHANDLE ncb_event;} NCB, *PNCB;重点在于ncb_command 成员。

这个成员告诉Netbios该作什么。

我们使用三个命令来探测MAC地址。

他们在MSDN的定义如下:命令描述:NCBENUM Windows NT/2000: 列举系统中网卡的数量。

使用此命令后,ncb_buffer成员指向由LANA_ENUM结构填充的缓冲区。

NCBENUM 不是标准的NetBIOS 3.0 命令。

NCBRESET 重置网卡。

vbs脚本自动获取本个活动网卡mac地址

vbs脚本自动获取本个活动网卡mac地址

vbs脚本自动获取本个活动网卡mac地址Set ws = CreateObject("WScript.Shell")ws.Run "cmd /k ipconfig /all >d:\\ip.txt",0name=1call inputnameif abc (name)>0 thenmsgbox "姓名中有英文或数字,请重新打开程序输入中文姓名,谢谢"Wscript.Quitend iffunction ABC(byval a)for i = 1 to len(a)if (mid(a,i,1)>="a" and mid(a,i,1)<="z") or (mid(a,i,1)>="A" and mid(a,i,1)<="Z") thenn=n+1exit forelsen=0end ifnextabc=nend functionfunction inputnamename = InputBox("请输入姓名")If IsEmpty(name) ThenMsgBox "是不是没写姓名,请重新打吧"call inputnameElsemsgBox "你输入的名字是:"+(name)End Ifend functionif IsNumeric (name)=true thenmsgbox "姓名中有数字,请重新打开程序输入中文姓名,谢谢"Wscript.Quitend ifDim mc,moSetmc=GetObject("Winmgmts:").InstancesOf("Win32_NetworkAda pterConfiguration")For Each mo In mcIf mo.IPEnabled=True Thenmac=mo.MacAddressExit ForEnd IfNextmac=cstr(mac)mac=replace(mac,":","")Dim objFSODim strFileNewstrFile = "d:\\ip.txt"strFileNew = "\\\\192.168.0.220\\公共区域\\临时空间(15天自动清空)\\" & (name)&(mac)&".txt"Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")objFSO.CopyFile (strFile),(strFileNew)。

如何查网卡的MAC地址

如何查网卡的MAC地址

如何查网卡的MAC地址要查找网卡的MAC地址,可以按照以下几个步骤进行操作:1.使用命令行查找MAC地址:- 打开命令提示符或终端窗口,可以通过在Windows上按下Win + R 键,然后输入"cmd"并按下Enter键,在Mac上可以在应用程序文件夹的实用工具文件夹中找到终端。

- 在命令提示符或终端中,输入"ipconfig /all"(Windows)或"ifconfig -a"(Mac/Linux)并按下Enter键。

- 在结果中找到你的网卡名称(可能是以太网适配器或Wi-Fi适配器)以及其对应的物理地址(即MAC地址)。

MAC地址通常以类似于"XX-XX-XX-XX-XX-XX"的形式显示在"Physical Address"或"HWaddr"一栏中。

2. 在Windows上使用图形界面查找MAC地址:- 在Windows任务栏上的栏中键入"查看网络连接",然后选择"查看网络连接"选项。

-在"网络连接"窗口中,找到并右键单击你想查找MAC地址的网卡(以太网适配器或Wi-Fi适配器),然后选择"状态"选项。

-在"状态"窗口中,单击"详细信息"按钮。

-在"详细信息"窗口中,找到"物理地址"或"MAC地址"一栏,其中显示了你的网卡的MAC地址。

3. 在Mac上使用图形界面查找MAC地址:-点击屏幕上的苹果图标,然后选择"系统偏好设置"。

-在"系统偏好设置"窗口中,选择"网络"选项。

-在"网络"窗口中,选择你要查找MAC地址的网络连接(以太网或Wi-Fi)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、C#编程要点
Microsoft提供的WMI(Windows Management Instrumentation)中提供了一个Win32_NetworkAdapterConfiguration的类,定义了获取MAC地址的方法,因此只要构造一个定义为Win32_NetworkAdapter Configuration的WMI类,从中取出MAC地址的值即可。

在C#中管理WMI主要使用ManagementClass类。

编写程序过程要注意以下两个要点。

1)、命名空间的添加
由于System.Management的动态链接库不是C#中默认加载的,所以要添加System.Management的命名空间前要添加System.Management.dll链接库。

依次选择:“项目”→“添加引用”→“.NET”菜单栏,加入System.Management。

确认添加了动态链接库后添加命名空间:
using System.Management;
2)、MAC地址的获取
根据前面的介绍,要构造一个ManagementClass类管理定义为Win32_NetworkAdapter Configuration的WMI类,然后将ManagementClass类中的所有变量的值返回给属于ManagementObjectCollection类的变量,ManagementObjectCollection类用于表示WMI实例的不同集合,将不同集合中的各个MAC地址读出,就可获得多网卡的MAC地址。

构造ManagementClass,函数原型如下:
public ManagementClass(string path);
参数:path表示WMI的路径。

要返回ManagementClass所有实例的集合,使用GetInstances(),函数原型如下:
public ManagementObjectCollection GetInstances();
例如:获得本机上多网卡的MAC地址:
ManagementClass mc; //定义一个ManagementClass类
//将ManagementClass类变量定义为Win32_NetworkAdapter Configuration,以便获得//网络信息
mc=new ManagementClass(” Win32_NetworkAdapterConfiguration”);
//使用ManagementObjectCollection记录mc中的所有信息,包括多个网卡信息
ManagementObjectCollection moc=mc. GetInstances();
//取得ManagementObjectCollection中的不同网卡配置信息,判断如果该网卡可用就//去读取MAC地址
foreach(ManagementObject mo in moc)
{ if(mo[“IPEnabled”].ToString()= =”True”)
Console.WriteLine(”MAC address”+mo[“MacAddress”].ToString());
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
ManagementClass mc; //定义一个ManagementClass类
//将ManagementClass类变量定义为Win32_NetworkAdapter Configuration,以便获得//网络信息
mc=new ManagementClass(" Win32_NetworkAdapterConfiguration");
//使用ManagementObjectCollection记录mc中的所有信息,包括多个网卡信息
ManagementObjectCollection moc=mc.GetInstances();
//取得ManagementObjectCollection中的不同网卡配置信息,判断如果该网卡可用就//去读取MAC地址
foreach(ManagementObject mo in moc)
{
if (mo["IPEnabled"].ToString() == "True")
Console.WriteLine("MAC address" + mo["MacAddress"].ToString());
Console.ReadLine();
}
}
}
}。

相关文档
最新文档