VC实现获取本机MAC地址的方法

 更新时间:2014年07月23日 10:33:16   投稿:shichen2014  
这篇文章主要介绍了VC实现获取本机MAC地址的方法,需要的朋友可以参考下

本文实例采用vc6.0运行环境,通过实例实现获得MAC地址的功能。

完整的实例代码如下:

#include "stdafx.h"
#include  <stdio.h>  
#include  <stdlib.h>  
#include  <httpext.h>  
#include  <windef.h>  
#include  <Nb30.h>

int getMAC(char * mac)   
{   
 NCB ncb;   
 typedef struct _ASTAT_   
 {
  ADAPTER_STATUS  adapt; 
  NAME_BUFFER  NameBuff  [30];   
 }ASTAT,  *  PASTAT;   
 ASTAT Adapter;   
  
 typedef struct _LANA_ENUM   
 {  //  le 
  UCHAR  length; 
  UCHAR  lana[MAX_LANA];   
 }LANA_ENUM  ;   
 LANA_ENUM lana_enum;   
  
 UCHAR uRetCode;   
 memset(&ncb, 0, sizeof(ncb));   
 memset(&lana_enum, 0, sizeof(lana_enum));   
  
 ncb.ncb_command = NCBENUM;   
 ncb.ncb_buffer = (unsigned char *)&lana_enum;   
 ncb.ncb_length = sizeof(LANA_ENUM);   
 uRetCode = Netbios(&ncb);   
 if(uRetCode != NRC_GOODRET)   
 return uRetCode;   
  
 for(int lana=0; lana<lana_enum.length; lana++)   
 {
  ncb.ncb_command = NCBRESET; 
  ncb.ncb_lana_num = lana_enum.lana[lana]; 
  uRetCode = Netbios(&ncb);  
  if(uRetCode == NRC_GOODRET) 
  break; 
 } 
 if(uRetCode != NRC_GOODRET)
  return uRetCode;   
  
 memset(&ncb, 0, sizeof(ncb)); 
 ncb.ncb_command = NCBASTAT; 
 ncb.ncb_lana_num = lana_enum.lana[0];
 strcpy((char*)ncb.ncb_callname, "*"); 
 ncb.ncb_buffer = (unsigned char *)&Adapter;
 ncb.ncb_length = sizeof(Adapter);
 uRetCode = Netbios(&ncb); 
 if(uRetCode != NRC_GOODRET)  
  return uRetCode;   
 sprintf(mac,"%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 0;  
 }

int main(int argc, char* argv[])
{
 char  mac[200];  
 getMAC(mac);  
 printf("  mac  :  %s  \n",mac);  
 
 return 0;
}

另外还需要注意:必须在project->Setting里添加库文件“netapi32.lib”。

相关文章

  • C++类与对象的详细说明

    C++类与对象的详细说明

    这篇文章主要为大家详细介绍了C++的类与对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • c++中cin/cout与scanf/printf的区别比较

    c++中cin/cout与scanf/printf的区别比较

    这篇文章主要介绍了c++中cin/cout与scanf/printf的区别比较,需要的朋友可以参考下
    2017-06-06
  • 如何在C语言中提取Shellcode并执行

    如何在C语言中提取Shellcode并执行

    Shellcode是一种独立于应用程序的机器代码,通常用于实现特定任务,如执行远程命令、注入恶意软件或利用系统漏洞,本文将深入探讨如何在C语言中提取Shellcode,并通过XOR加密技术增加其混淆程度,文中通过代码示例讲解的非常详细,需要的朋友可以参考下
    2023-12-12
  • 浅析设计模式中的代理模式在C++编程中的运用

    浅析设计模式中的代理模式在C++编程中的运用

    这篇文章主要介绍了设计模式中的代理模式在C++编程中的运用,代理模式最大的好处就是实现了逻辑和实现的彻底解耦,需要的朋友可以参考下
    2016-03-03
  • C++ boost::asio编程-域名解析详细介绍

    C++ boost::asio编程-域名解析详细介绍

    这篇文章主要介绍了C++ boost::asio编程-域名解析详细介绍的相关资料,这里附有实例代码,帮助大家学习理解这部分知识,需要的朋友可以参考下
    2016-11-11
  • VSCode添加头文件(C/C++)的实现示例

    VSCode添加头文件(C/C++)的实现示例

    这篇文章主要介绍了VSCode添加头文件(C/C++)的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • C++超详细讲解模板的使用

    C++超详细讲解模板的使用

    这篇文章主要介绍了C++中模板(Template)的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Qt为exe添加ico图片的简单实现步骤

    Qt为exe添加ico图片的简单实现步骤

    这篇文章主要给大家介绍了关于Qt为exe添加ico图片的简单实现步骤,通过文中介绍的方法可以帮助大家实现这个自定义exe图标的效果,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 详解C语言常用的一些转换工具函数

    详解C语言常用的一些转换工具函数

    这篇文章主要介绍了C语言常用的一些转换工具函数,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • C语言由浅入深讲解文件的操作下篇

    C语言由浅入深讲解文件的操作下篇

    C语言具有操作文件的能力,比如打开文件、读取和追加数据、插入和删除数据、关闭文件、删除文件等。与其他编程语言相比,C语言文件操作的接口相当简单和易学
    2022-04-04

最新评论