代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C
】
用NetAPI获取网卡的物理MAC地址
作者:
mickelfeng
/ 发布于
2014/9/10
/
894
VC++ 用NetAPI获取网卡的物理MAC地址, 网上很多的用VC读取MAC代码都没用,坑害了不少新手朋友,我在这里把网上流传的一些错误版本进行了整合和纠错,在这里把有效代码贴出来,有疑问欢迎提出。
// Mac-Reader.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> #include <wincon.h> #include <nb30.h> // 因为是通过NetAPI来获取网卡信息,所以需要包含其题头文件nb30.h #include <stdlib.h> #include <stdio.h> #include <time.h> typedef struct _ASTAT_ { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff [30]; }ASTAT, * PASTAT; ASTAT Adapter; // 定义一个存放返回网卡信息的变量 // 输入参数:lana_num为网卡编号,一般地,从0开始,但在Windows 2000中并不一定是连续分配的 void getmac_one (int lana_num) { NCB ncb; UCHAR uRetCode; memset( &ncb, 0, sizeof(ncb) ); ncb.ncb_command = NCBRESET; ncb.ncb_lana_num = lana_num; // 指定网卡号 // 首先对选定的网卡发送一个NCBRESET命令,以便进行初始化 uRetCode = Netbios( &ncb ); printf( "The NCBRESET return code is:0x%x /n", uRetCode ); memset( &ncb, 0, sizeof(ncb) ); ncb.ncb_command = NCBASTAT; ncb.ncb_lana_num = lana_num; // 指定网卡号 strcpy( (char *)ncb.ncb_callname,"* " ); ncb.ncb_buffer = (unsigned char *) &Adapter; // 指定返回的信息存放的变量 ncb.ncb_length = sizeof(Adapter); // 接着,可以发送NCBASTAT命令以获取网卡的信息 uRetCode = Netbios( &ncb ); printf( "The NCBASTAT eturn code is: 0x%x /n", uRetCode ); if ( uRetCode == 0 ) { // 把网卡MAC地址格式化成常用的16进制形式,如0010-A4E4-5802 printf( "The Ethernet Number[%d] is: %02X-%02X-%02X-%02X-%02X-%02X/n", lana_num, 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] ); } } int main(int argc, char* argv[]) { NCB ncb; UCHAR uRetCode; LANA_ENUM lana_enum; memset( &ncb, 0, sizeof(ncb) ); ncb.ncb_command = NCBENUM; ncb.ncb_buffer = (unsigned char *) &lana_enum; ncb.ncb_length = sizeof(lana_enum); // 向网卡发送NCBENUM命令,以获取当前机器的网卡信息,如有多少个网卡、每张网卡的编号等 uRetCode = Netbios( &ncb ); printf( "The NCBENUM return code is:0x%x /n", uRetCode ); if ( uRetCode == 0 ) { printf( "Ethernet Count is : %d/n/n", lana_enum.length); getmac_one( lana_enum.lana[0]);//对第一个网卡 //如果你有多张网卡 /* for ( int i=0; i< lana_enum.length; ++i) // getmac_one( lana_enum.lana[i]); */ } return 0; }
试试其它关键字
MAC地址
网卡
MAC
同语言下
.
获取手机通讯录 iOS去除数字以外的所有字符
.
异步加载音乐等资源
.
交通罚单管理系统
.
freemark实现,简单的替换
.
计算斐波那契数列
.
base64解码 包括解码长度
.
图像显示
.
冒泡排序
.
输入十进制数,输出指定进制
.
链式栈
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
mickelfeng
贡献的其它代码
(
22
)
.
安卓图片异步加载工具类
.
加密解密php代码
.
将PHP数组有格式的写入文件中
.
获取访问页面的http状态码
.
WinInet远程下载文件的
.
用NetAPI获取网卡的物理MAC地址
.
极方便的动态 SQL 生成工具
.
PHP图片缩放函数:实现等比例不失真缩放
.
判断手机移动设备访问
.
扁平化的bootstrap
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3