如题

解决方案 »

  1.   

    xp下面要通过NetBios协议获得
    win7没用过#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;void main (void)
    {
        NCB ncb;
        UCHAR uRetCode;
        char NetName[50];    memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBRESET;
        ncb.ncb_lana_num = 0;    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 = 0;    strcpy( ncb.ncb_callname,  "*               " );
        ncb.ncb_buffer = (char *) &Adapter;
        ncb.ncb_length = sizeof(Adapter);    uRetCode = Netbios( &ncb );
        printf( "The NCBASTAT return code is: 0x%x \n", uRetCode );
        if ( uRetCode == 0 )
        {
            printf( "The Ethernet Number is: %02x%02x%02x%02x%02x%02x\n",
                    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] );
        }
    }
      

  2.   

    XP下获取方法有好几种,我用NetBios协议方法获取时,两种系统貌似得到的不是同一种mac地址,XP是物理网卡的,而Win7好像是无线网卡的。而用GetAdapterInfo()方法时,Win7系统下程序直接无法运行
      

  3.   

    Netbios好像有个函数可以做网卡遍历,好像是通过改ncb_lana_num,记不清了,包括虚拟网卡,实体网卡都可以找出来,但是也没办法区分哪个网卡是真的,乱哄哄。
    记得win7很有意思,如果这个网卡是连接网线的(比如hub),netbios就找得到,无线网卡不知道。
      

  4.   

    全部用WMI编程来获取。WMI是微软开发存储当前计算机各种信息的数据库。
      

  5.   


    用WMI的话,类名是什么 Win32_XXX ?