获取机器属性

时间:2008-11-30 16:35:08

标签: c++ winapi

我想编写一个识别机器的程序(用于许可目的),我想获得以下信息并使用这些数据编译xml文件:

  1. MAC地址。
  2. CPU数据(串行,制造等)
  3. MotherBoard Identification。 (连续,制造等)
  4. 有人可以将我推荐给提供此类信息的lib - 我用c ++编写我的程序并且找到这样的lib会遇到麻烦。

    我应该在注册表中挖掘这些信息吗?

    非常感谢, 奥弗

3 个答案:

答案 0 :(得分:3)

使用WMI并获取主板的序列号应该足够了(其他选项不太安全,因为旧计算机可能没有网络适配器和/或CPU可能比主板更可能更改)

答案 1 :(得分:0)

GetAdaptersInfo()将为您提供MAC地址。以下是如何将其用于此目的的示例。

/** *************************************

  return string containing first MAC address on computer

  NOTE: requires adding Iphlpapi.lib to project

 */
string GetMac()
{
    char data[4096];
    ZeroMemory( data, 4096 );
     unsigned long  len = 4000;
    PIP_ADAPTER_INFO pinfo = ( PIP_ADAPTER_INFO ) data;
    char sbuf[20];
    string sret;

    DWORD ret = GetAdaptersInfo( pinfo, &len );
    if( ret != ERROR_SUCCESS )
        return string("**ERROR**");

    for(int k = 0; k < 5; k++ ) {
        sprintf(sbuf,"%02X-",pinfo->Address[k]);
        sret += sbuf;
    }
    sprintf(sbuf,"%02X",pinfo->Address[5]);
    sret += sbuf;

    return( sret );
}

有关完整系统执行此类操作的示例,请查看CodeProject上的Manuele Sicuteri的article

答案 2 :(得分:0)

不要使用WMI(慢,没有安装在NT上) 使用标准的Win32 apis

见新闻://comp.os.ms-windows.programmer.win32 所有这些已经回答了几十年(C / ++代码)