ManagementClass mc = new ManagementClass("Win32_Processor");
    ManagementObjectCollection moc = mc.GetInstances();
      
    String strCpuID = null ;
    foreach( ManagementObject mo in moc ) 
    {
     strCpuID = mo.Properties["ProcessorId"].Value.ToString();
     break; 
    }

解决方案 »

  1.   

    time and time again, I ask you and myself
      

  2.   

    好像ManagementClass都很慢,还是用API吧
      

  3.   

    其实获得cpu信息可以查regedit,HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\下面,先用SYSTEM_INFO sysInfo; GetSystemInfo(&sysInfo);来获得有几个cpu
    code is below:
    #define KEY "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\"
    SYSTEM_INFO sysInfo;
    GetSystemInfo(&sysInfo); char CPUInfo[100];
    memset( CPUInfo,0,sizeof(CPUInfo) );

    int i  = sysInfo.dwNumberOfProcessors; // Regedit
    CRegKey reg; char OpKey[100];

    //array list
    vector <char*> arrylist; for(int j=0;j<i;j++)
    {
    // initial
    memset( OpKey,0,sizeof(OpKey) );
    wsprintf( OpKey,"%s%d",KEY,j );

    // open the regedit
    long ret ;
    if( ret = reg.Create(HKEY_LOCAL_MACHINE,OpKey) != ERROR_SUCCESS )
    {

    return NULL;
    }
    char value[255];
    memset(value,0,sizeof(value));

    DWORD size = sizeof(value);
    reg.QueryValue(value,_T("ProcessorNameString"),(ULONG*)&size);
    arrylist.push_back(value);
    // close
    reg.Close(); } // 取第一个CPU信息
    //m_Cpu = _T(arrylist[0]);
    return _T(arrylist[0]);