mac地址查询API(mac地址查询设备)

网友投稿 892 2022-11-05


mac地址查询API(mac地址查询设备)

本文目录一览:

C#获取本机MAC地址和CPU序列号 - - 求API函数 或者源码!

public class getInfo

{

/// summary

/// 获取CPU序列号

/// /summary

/// returnsCPU序列号(string类型 )/returns

public string getCpuID()

{

string cpuInfo =" ";

ManagementClass cimobject = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = cimobject.GetInstances();

foreach (ManagementObject mo in moc)

{

cpuInfo = mo.Properties["ProcessorId"].Value.ToString();

}

return cpuInfo.ToString();

} /// summary

/// 获取硬盘ID

/// /summary

/// returns返回硬盘ID(string类型) /returns

public string getHDid()

{

string HDid = " ";

ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");

ManagementObjectCollection moc1 = cimobject1.GetInstances();

foreach (ManagementObject mo in moc1)

{

HDid = (string)mo.Properties["Model"].Value;

}

return HDid.ToString(); } /// summary

/// 获取网卡硬地址

/// /summary

/// returns返回网卡硬地址(string类型)/returns

public string GetMoAddress()

{

string MoAddress =" ";

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");

ManagementObjectCollection moc2 = mc.GetInstances();

foreach (ManagementObject mo in moc2)

{

if ((bool)mo["IPEnabled"] == true)

{

MoAddress = mo["MacAddress"].ToString();

mo.Dispose();

}

}

return MoAddress.ToString();

}

}/p我空间日志写过,希望能帮到你

哪种方法获取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_STATS,

OID_802_3_PERMANENT_ADDRESS/OID_802_3_CURRENT_ADDRESS...)

具体的情况可以参看ddk下的

OID_802_3_CURRENT_ADDRESS条目

2.NetAPI-2得到MAC (MSDN推荐方法)

#include windows.h

//#include wincon.h

#include stdlib.h

#include stdio.h

#include time.h

typedef struct _ASTAT_

{

ADAPTER_STATUS adapt;

NAME_BUFFER NameBuff [30];

}ASTAT, * PASTAT;

ASTAT 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 = lenum.lana;

uRetCode = Netbios( Ncb );

printf( "The NCBRESET on LANA %d return code is: 0x%x /n",

lenum.lana, uRetCode );

memset( Ncb, 0, sizeof (Ncb) );

Ncb.ncb_command = NCBASTAT;

Ncb.ncb_lana_num = lenum.lana;

strcpy( Ncb.ncb_callname, "* " );

Ncb.ncb_buffer = (char *) Adapter;

Ncb.ncb_length = sizeof(Adapter);

uRetCode = Netbios( Ncb );

printf( "The NCBASTAT on LANA %d return code is: 0x%x /n",

lenum.lana, uRetCode );

if ( uRetCode == 0 )

{

printf( "The Ethernet Number on LANA %d is:%02x%02x%02x%02x%02x%02x/n",

lenum.lana,

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地址。

GUID通常用来标识COM组件以及系统中的其他对象。它们是由MAC地址(结合其他东西)计算得来的,表面上MAC地址就包含在其中。

我说表面上是因为事实上并没有包含。我提供这种方法更多的是为了作为反面教材。您也许用这种方法能够得到MAC地址,但

有时候您只会得到随机的十六进制数值。下面的例子十分简单,无需多讲。我们使用CoCreateGuid创建GUID,并将最后六个字节

放入字符串中。它们可能是MAC地址,但并不是必然的。

uuid.cpp

#include windows.h

#include iostream

#include conio.h

using namespace std;

int main()

{

cout "MAC address is: ";

// 向COM要求一个UUID。如果机器中有以太网卡,

// UUID最后的六个字节(Data4的2-7字节)应该是本地以太网卡的MAC地址。

GUID uuid;

CoCreateGuid(uuid);

// Spit the address out

char mac_addr[18];

sprintf(mac_addr,"%02X:%02X:%02X:%02X:%02X:%02X",

uuid.Data4[2],uuid.Data4[3],uuid.Data4[4],

uuid.Data4[5],uuid.Data4[6],uuid.Data4[7]);

cout mac_addr endl;

getch();

return 0;

}

4.用NetAPI来获取网卡MAC地址

首先在头文件定义中加入#include "nb30.h"

#pragma comment(lib,"netapi32.lib")

typedef struct _ASTAT_

{

ADAPTER_STATUS adapt;

NAME_BUFFER NameBuff[30];

} ASTAT, * PASTAT;

就可以这样调用来获取远程网卡MAC地址了:

CString GetMacAddress(CString sNetBiosName)

{

ASTAT Adapter;

NCB ncb;

UCHAR uRetCode;

memset(ncb, 0, sizeof(ncb));

ncb.ncb_command = NCBRESET;

ncb.ncb_lana_num = 0;

uRetCode = Netbios(ncb);

memset(ncb, 0, sizeof(ncb));

ncb.ncb_command = NCBASTAT;

ncb.ncb_lana_num = 0;

sNetBiosName.MakeUpper();

FillMemory(ncb.ncb_callname, NCBNAMSZ - 1, 0x20);

strcpy((char *)ncb.ncb_callname, (LPCTSTR) sNetBiosName);

ncb.ncb_callname[sNetBiosName.GetLength()] = 0x20;

ncb.ncb_callname[NCBNAMSZ] = 0x0;

ncb.ncb_buffer = (unsigned char *) Adapter;

ncb.ncb_length = sizeof(Adapter);

uRetCode = Netbios(ncb);

CString sMacAddress;

if (uRetCode == 0)

{

sMacAddress.Format(_T("%02x%02x%02x%02x%02x%02x"),

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]);

}

return sMacAddress;

}

PB怎么样用API获取网卡MAC

调用 API GetAdaptersInfo 获取本机适配器信息名称,IP地址,子网掩码,MAC地址要加载库文件: Iphlpapi.lib#define WIN32_LEAN_AND_MEAN#include #include #include #include #include #include #include #include #include #define MALLOC(x) Heap...

如何得到正在使用网卡的MAC地址API

网卡MAC物理地址是“固化在网卡里的编号”,是一个12位的16进制数。

1.如果你是新买的网卡,那么有个简单的方法就是查看网卡的标签,在新网卡上面会贴有网卡的物理地址。

2.如果你的计算机已经安装好了,那么查询方法由你的操作系统决定:

(1)windows操作系统(95/98/NT):使用winipcfg.exe命令

使用开始菜单里的运行命令,然后键入winipcfg.exe命令,就可以看见一个窗口,包括网卡类型、IP地址、MAC地址、子网掩码和子网网关。 BR注意:选择类型时要选择网卡,不要选择PPP adpter。

(2)UNIX系统(linux/redhat):使用ifconfig命令。

注意:使用者必须是系统的超级用户。

(3)NCSA系统:使用网卡驱动程序命令。

在命令行里键入所使用的网卡的驱动程序命令,便会显示相应的一些信息。

3.如果你有多台计算机可以使用,那么可以互相查询:

首先在windows的DOS或者NCSA下使用ping命令,ping通相应的计算机以后,使用arp-a命令,便可以查询所ping机子的网卡MAC物理地址

mac地址查询API的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mac地址查询设备、mac地址查询API的信息别忘了在迈希泽CE认证机构进行查找喔。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:1325_FreeRTOS队列发送函数的实现分析
下一篇:Spring Boot 2.x基础教程之配置元数据的应用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~