要求:
    1.硬件包括CUP、硬盘、主板、网卡、声卡、光区等
    2.程序代码应是完整的、准确的、适用各种操作系统
    3.需要说明适用范围、注意事项
    ……请各位高手把自己的优秀成果给大家共享一下!

解决方案 »

  1.   

    取得CPU相关信息
    #include  <  conio.h  >  
    #include  <  iostream.h  >  
    #pragma  hdrstop  
    struct tagCPUInf
    {
    CString m_strOem;     //CPU&#65397;&#65412;&#65417;嵂嵭&#65383;&#65417;&#65420;,&#65423;&#12539;&#65400;&#65415;&#12539;&#65396;&#65396;惲&#12539;&#12539;&#65412;&#65431;&#65378;&#65418;&#65421;
    CString m_strOemShort;//CPU&#65397;&#65412;&#65417;嵂嵭&#65383;&#65417;&#65420;&#65397;&#65412;&#65404;&#65396;&#65411;&#12539;
    CString m_strLevel;   //CPU&#65397;&#65412;&#65396;摠&#63729;,&#65416;&#12539;86, 586&#65397;&#65416;
    CString m_strFamily;  //CPU&#65419;&#65412;Family
    CString m_strCPUID;   //CPU&#65424;&#65424;&#65402;&#65413;
    BOOL    m_bFPU;       //&#65418;&#65415;&#65399;&#65383;&#65395;&#65430;FPU,TRUE&#65422;&#65386;&#65430;&#65383;&#65395;&#65430;
    BOOL    m_bMMX;       //&#65418;&#65415;&#65399;&#65383;&#65395;&#65430;MMX,TRUE&#65422;&#65386;&#65430;&#65383;&#65395;&#65430;
    BOOL    m_bP6;        //&#65418;&#65415;&#65399;&#65415;P6&#65404;&#65436;&#65401;&#65401;};
    /*
    &#65402;&#65391; &#65418;&#63729; &#65411;&#12539;GetCPUInformation
    &#65419;&#65412;&#65408;&#12539;
    &#65402;&#65391;&#65418;&#63729;&#65401;&#65382;&#65412;&#65436;:&#65416;&#65377;&#65397;&#65411;CPU&#65397;&#65412;&#65423;犹&#65432;&#65424;&#65413;&#65423;&#65378;,&#65406;&#65439;&#65420;蠏&#65412;&#65415;&#12539;&#65396;tagCPUInf&#65397;&#65412;&#65398;&#65384;&#65426;&#12539;
    &#65392;&#12539;&#65393;&#65406; &#65402;&#65413;:1.0
    &#65421;&#12539;&#65417;&#65416;&#65429;&#65414;&#65434;:2004/07/01
    &#65399;&#65397; &#65403;&#65432; &#65430;&#65397;:&#65399;&#65397;&#65403;&#65432;CPU&#65397;&#65412;&#65423;犹&#65432;&#65424;&#65413;&#65423;&#65378;,&#65406;&#65439;&#65420;蠏&#65412;&#65415;&#12539;&#65396;tagCPUInf&#65397;&#65412;&#65398;&#65384;&#65426;&#12539;
    &#65394;&#65422; &#65418;&#63729;  1:&#65422;&#65438;
    &#65394;&#65422; &#65418;&#63729;  2:
    &#65395;&#65417;&#65428;&#65393;&#65408;獎&#65421;:
    &#65414;萢&#12539;&#65397;&#65411;&#12539;
    &#65427;&#65382;&#65427;&#65411;&#65418;&#65406;&#65408;&#63729;:
    tagCPUInf cpuinf;
    cpuinf=GetCPUInformation();
    */
    tagCPUInf GetCPUInformation(void)
    {
    /*
    &#65413;&#65424;&#65398;&#65423;CPU&#65395;&#65383;&#65417;&#65420;  
    &#65423;&#65416; &#65416;&#65411;EAX=0,&#65428;&#65433;&#65397;&#65411;CPUID Inel&#65397;&#65412;CPU&#65405;&#65387;&#65399;&#65397;&#65403;&#65432;:    
    EBX:756E6547H  'Genu'  
    EDX:49656E69H  'ineI'  
    ECX:6C65746EH  'ntel'  
    EBX,EDX,ECX&#65405;&#65387;&#65409;&#65388;&#65395;&#65417;"GenuineIntel",  &#65430;&#65424;&#65422;&#65412;&#65426;簍&#65404;&#65422;&#65386;"&#65429;贏&#63729;&#65397;&#65412;Intel". Cyrix&#65397;&#65412;CPU&#65405;&#65387;&#65399;&#65397;&#65403;&#65432;:  
    EBX:43797269H  
    EDX:78496E73H  
    ECX:74656164H  
    "CyrixInstead",&#65430;&#65424;&#65422;&#65412;&#65426;簍&#65404;&#65422;&#65386;"Cyrix&#65408;&#65396;&#65396;擎&#12539;.  
    AMD&#65397;&#65412;CPU&#65405;&#65387;&#65399;&#65397;&#65403;&#65432;:   
    EBX:41757468H  
    EDX:656E7469H  
    ECX:63414D44H  
    "AuthenticAMD",&#65430;&#65424;&#65422;&#65412;&#65426;簍&#65404;&#65422;&#65386;"&#65407;&#65417;&#65424;&#65413;&#65397;&#65412;AMD".
    */

    tagCPUInf CPUInf;
    //ZeroMemory(&CPUInf, sizeof(CPUInf));
    char OEMString[13];//&#65416;&#65377;&#65397;&#65411;CPU&#65394;揵&#65420;&#65411;&#12539;
    _asm  
    {  
    mov  eax,0  
    cpuid //&#65416;&#65377;&#65397;&#65411;CPU&#65424;&#65413;&#65423;&#65378;&#65397;&#65412;&#65430;&#65400;&#65409;&#12539;
    mov  DWORD PTR  OEMString,ebx  
    mov  DWORD PTR  OEMString+4,edx  
    mov  DWORD PTR  OEMString+8,ecx  
    mov  BYTE  PTR  OEMString+12,0  

    CPUInf.m_strOem=OEMString;//&#65416;&#65377;&#65397;&#65411;&#65417;嵂嵭&#65383;&#65417;&#65420;&#65411;&#12539;

    CString strTmp=OEMString;
    strTmp.MakeUpper();
    if(strTmp.Find("INTEL")!=-1)//intel CPU
    {
    CPUInf.m_strOemShort="Intel";
    /*
    CPU&#65397;&#65405;&#65397;&#65431;&#65418;&#65415;&#65404;&#65400;86,&#65418;&#65415;&#65399;&#65383;&#65395;&#65430;MMX    
    &#65423;&#65416;&#65416;&#65411;EAX=1,&#65428;&#65433;&#65397;&#65411;CPUID,EAX&#65397;&#65412;8&#65397;&#65405;11&#65422;&#65403;&#65406;&#65421;&#65393;朎&#65415;&#65404;&#65400;86&#65416;醯&#65410;:    
    2:Dual Processors 
    3:386  
    4:i486  
    5:Pentium  
    6:Pentium Pro Pentium II  
    EDX&#65397;&#65412;&#65397;&#65434;0&#65422;&#65403;:&#65427;&#65424;&#65422;&#65438;FPU  
    EDX&#65397;&#65412;&#65397;&#65434;23&#65422;&#65403;:CPU&#65418;&#65415;&#65399;&#65383;&#65395;&#65430;IAMMX,&#65402;&#65436;&#65430;&#65432;&#65426;&#65386;&#65392;&#65377;!&#65416;郢鈺耘&#12539;&#65411;&#65412;&#65415;57&#65420;&#65410;&#65428;&#65412;&#65430;&#65400;&#65409;&#12539;&#65423;&#65416;&#65404;&#12539;鰈簫&#65403;&#65422;&#65403;&#65392;&#65417;,&#65399;&#65421;&#65397;&#65416;&#65431;&#65413;&#65407;&#65396;
    Windows&#65397;&#65412;"&#65400;&#65411;&#65395;&#65420;&#65424;&#65396;&#65424;&#65424;&#65409;&#65419;&#65399;&#65415;&#65399;&#65384;&#65430;&#65400;&#65409;&#12539;&#65405;&#65387;&#65393;&#65403;&#65401;&#65432;&#65393;&#65429;"&#65392;&#65417;.  
    */

    int iEAXValue,iEBXValue,iECXValue,iEDXValue;
      

  2.   

    _asm  
    {  
    mov  eax,1  
    cpuid  
    mov  iEAXValue,eax  
    mov  iEBXValue,ebx  
    mov  iECXValue,ecx  
    mov  iEDXValue,edx  
    }   int iLevel=iEAXValue & 0xF00;//&#65398;&#65428;&#65394;&#65403;&#65398;&#65428;&#65412;&#65432;&#65379;&#65407;
    iLevel>>=8;
    if(iLevel==2)
    {
    CPUInf.m_strLevel="Dual Processors";
    }
    else if(iLevel==3)
    {
    CPUInf.m_strLevel="386";
    }
    else if(iLevel==4)
    {
    CPUInf.m_strLevel="i486";
    }
    else if(iLevel==5)
    {
    CPUInf.m_strLevel="Pentium";
    }
    else if(iLevel==6)
    {
    CPUInf.m_strLevel="Pentium Pro Pentium II";
    }

    CPUInf.m_bFPU=(BOOL)iEDXValue & 0x1;
    //int c=iEDXValue & 0x10;
    CPUInf.m_bMMX=(BOOL)(iEDXValue & 0x800000)>>23; int  iCPUFamily=(0xF00 & iEAXValue)>>8;  
    CPUInf.m_strFamily.Format("CPU Family is:%d", iCPUFamily); /*
    &#65431;&#65384;&#65411;&#65413;&#65404;&#12539;簗&#65415;&#65399;&#65415;P6&#65404;&#65436;&#65401;&#65401;    
    &#65423;&#65416;&#65416;&#65411;EAX=1,&#65428;&#65433;&#65397;&#65411;CPUID.&#65416;郢涬L=1,&#65406;&#65421;&#65418;&#65415;PentiumPro&#65403;entiumII    
    */
    BYTE _AL;
    _asm
    {  
    mov  eax,2  
    CPUID
    mov _AL, AL
    }
    CPUInf.m_bP6=(BOOL)_AL;//Pentium Pro or Pentium II Found
    }
    else if(strTmp.Find("AMD")!=-1)//AMD CPU
    {
    CPUInf.m_strOemShort="AMD"; /*&#65431;&#65384;&#65411;&#65413;&#65404;&#12539;磚MD&#65397;&#65412;CPU&#65424;&#65413;&#65423;&#65378;    
    &#65423;&#65416;&#65416;&#65411;EAX=80000001H,&#65428;&#65433;&#65397;&#65411;CPUID    
    &#65416;郢淼AX=51H,&#65418;&#65415;AMD K5    
    &#65416;郢淼AX=66H,&#65418;&#65415;K6    
    K7&#65418;&#65415;&#65418;&#65394;&#65411;&#65396;&#65393;&#12539;&#65406;,&#65430;&#65403;&#65427;&#65424;&#65397;&#65416;&#65396;&#65426;&#65412;&#65411;&#65397;&#65405;K7&#65397;&#65412;&#65424;&#65406;&#65428;&#65433;&#65419;&#65397;&#65409;&#65419;.    
    EDX&#65397;&#65434;0&#65422;&#65403;:&#65418;&#65415;&#65399;&#65424;FPU(&#65398;獗犒&#65412;.&#65419;&#65389;&#65427;&#65411;&#65401;&#63729;&#65411;&#65403;FPU&#65397;&#65412;K5,K6)    
    EDX&#65397;&#65434;23&#65422;&#65403;CPU&#65418;&#65415;&#65399;&#65383;&#65395;&#65430;MMX.    
    */
    int iEAXValue,iEBXValue,iECXValue,iEDXValue;
    _asm
    {
    mov eax, 0x80000001
    cpuid
    mov  iEAXValue,eax  
    mov  iEBXValue,ebx  
    mov  iECXValue,ecx  
    mov  iEDXValue,edx  
    }
    if(iEAXValue==0x51)//AMD K5
    {
    CPUInf.m_strLevel="AMD K5";
    }
    else if(iEAXValue==0x66)//AMD K6   K7&#65422;&#65396;&#65430;&#65386;
    {
    CPUInf.m_strLevel="AMD K6";
    }
    CPUInf.m_bFPU=(BOOL)iEDXValue & 0x1;//&#65418;&#65415;&#65399;&#65383;&#65395;&#65430;FPU
    CPUInf.m_bMMX=(BOOL)(iEDXValue&0x800000>>23);//&#65418;&#65415;&#65399;&#65383;&#65395;&#65430;MMX
    CPUInf.m_strFamily="AMD";
    CPUInf.m_bP6=FALSE;
    }
    else if(strTmp.Find("CYRIX")!=-1)//CYRIX CPU  &#65401;&#65408;&#65404;&#65414;&#65426;&#65425;&#65411;&#65403;&#65427;&#65424;&#65409;&#65419;
    {
    CPUInf.m_strOemShort="Cyrix";
    } char szCPUID[129]  =  {NULL};  
    char szTmp[33]  =  {NULL};  
    unsigned long s1  =  0, s2  =  0;  
    _asm  
    {  
    mov  eax,01h  
    xor  edx,edx  
    cpuid  
    mov  s1,edx  
    mov  s2,eax  
    }  
    sprintf(szTmp, "%08X%08X", s1, s2);  
    strcpy(szCPUID, szTmp);  
    _asm  
    {  
    mov  eax,03h  
    xor  ecx,ecx  
    xor  edx,edx  
    cpuid  
    mov  s1,edx  
    mov  s2,ecx  
    }  
    sprintf(szTmp,  "%08X%08X",  s1,  s2);  
    strcat(szCPUID,  szTmp);  
    CPUInf.m_strCPUID=szCPUID; return CPUInf;
    }
      

  3.   

    你可以到FAQ里找,有不少!如何读取电脑CPU序列号、主板BIOS、硬盘的序列号
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=195689获得计算机的主板的ID  ,网卡的ID,CUP的ID等应该怎样获得,谢谢
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=186094