您的位置:首页 > 其它

通过注册表获取硬件信息

2013-11-29 17:06 375 查看

 

LONG QueryValue( LPTSTR szValue, LPCTSTR
lpszValueName, DWORD*
pdwCount )

szValue:字符串数据类型的键值

lpszValueName:所读取键值项的名称

pdwCount:字符串大小

成功读取注册表中某键值项的键值,成功返回ERROR_SUCCESS;失败返回错误值

注意第三个参数,为存储该键值的大小,应根据实际情况设定比较合理的空间,这里为30个字符。

 

 

LONG QueryValue( DWORD& dwValue, LPCTSTR lpszValueName)

dwValue:DWORD数据类型的键值

lpszValueName:所读取键值项的名称

pdwCount:字符串大小

成功读取注册表中某键值项的键值,成功返回ERROR_SUCCESS;失败返回错误值

 

获取CPU名称

获取HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0子键中获取ProcessorNameString的键值。该注册表子键存储了当前计算机的处理器信息,如CPU名称、标识和厂商等。

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton1()   
{  
    CString strPath="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";  
    CRegKey regKey;  
    LONG lResult;  
    lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  
    //打开注册表主键     
    if (lResult!=ERROR_SUCCESS)//读取键值不成功     
    {    
        AfxMessageBox("错误:无法查询有关的注册表信息");    
        return;    
    }    
    char chCPUName[50];    
    DWORD dwSize=50;    
    regKey.QueryValue(chCPUName,"ProcessorNameString",&dwSize);    
    //获取RegisteredOwner的值     
    m_strCPUName=chCPUName;    
    UpdateData(FALSE);    
    regKey.Close();//关闭注册表  
      
}  

void CSystemHardwareInfoDlg::OnButton1()
{
CString strPath="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

//打开注册表主键
if (lResult!=ERROR_SUCCESS)//读取键值不成功
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
char chCPUName[50];
DWORD dwSize=50;
regKey.QueryValue(chCPUName,"ProcessorNameString",&dwSize);
//获取RegisteredOwner的值
m_strCPUName=chCPUName;
UpdateData(FALSE);
regKey.Close();//关闭注册表

}

获取CPU标识 

获取HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0子键中获取Identifier的键值。

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton2()   
{  
    CString strPath="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";  
    CRegKey regKey;  
    LONG lResult;  
    lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
      
    //打开注册表主键     
    if (lResult!=ERROR_SUCCESS)//读取键值不成功     
    {    
        AfxMessageBox("错误:无法查询有关的注册表信息");    
        return;    
    }    
    char chCPUID[50];    
    DWORD dwSize=50;    
    regKey.QueryValue(chCPUID,"Identifier",&dwSize);    
    //获取RegisteredOwner的值     
    m_strCPUIdentifier=chCPUID;    
    UpdateData(FALSE);    
    regKey.Close();//关闭注册表  
      
}  

void CSystemHardwareInfoDlg::OnButton2()
{
CString strPath="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

//打开注册表主键
if (lResult!=ERROR_SUCCESS)//读取键值不成功
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
char chCPUID[50];
DWORD dwSize=50;
regKey.QueryValue(chCPUID,"Identifier",&dwSize);
//获取RegisteredOwner的值
m_strCPUIdentifier=chCPUID;
UpdateData(FALSE);
regKey.Close();//关闭注册表

}

获取CPU制造商名称 

获取HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0子键中获取VendorIdentifier的键值。

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton3()   
{  
    CString strPath="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";  
    CRegKey regKey;  
    LONG lResult;  
    lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
      
    //打开注册表主键     
    if (lResult!=ERROR_SUCCESS)//读取键值不成功     
    {    
        AfxMessageBox("错误:无法查询有关的注册表信息");    
        return;    
    }    
    char chVendor[50];    
    DWORD dwSize=50;    
    regKey.QueryValue(chVendor,"VendorIdentifier",&dwSize);    
    //获取RegisteredOwner的值     
    m_strVendorID=chVendor;    
    UpdateData(FALSE);    
    regKey.Close();//关闭注册表  
      
}  

void CSystemHardwareInfoDlg::OnButton3()
{
CString strPath="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

//打开注册表主键
if (lResult!=ERROR_SUCCESS)//读取键值不成功
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
char chVendor[50];
DWORD dwSize=50;
regKey.QueryValue(chVendor,"VendorIdentifier",&dwSize);
//获取RegisteredOwner的值
m_strVendorID=chVendor;
UpdateData(FALSE);
regKey.Close();//关闭注册表

}

获取CPU主频 

获取HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0子键中获取~MHz的键值。注意为DWORD类型。

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton4()   
{  
    CString strPath="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";  
    CRegKey regKey;  
    LONG lResult;  
    lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
      
    //打开注册表主键     
    if (lResult!=ERROR_SUCCESS)//读取键值不成功     
    {    
        AfxMessageBox("错误:无法查询有关的注册表信息");    
        return;    
    }    
    DWORD dwMHz;   
    DWORD dwSize=50;    
    regKey.QueryValue(dwMHz,"~MHz");    
    //获取RegisteredOwner的值     
    m_nMHz=dwMHz;    
    UpdateData(FALSE);    
    regKey.Close();//关闭注册表  
      
}  

void CSystemHardwareInfoDlg::OnButton4()
{
CString strPath="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

//打开注册表主键
if (lResult!=ERROR_SUCCESS)//读取键值不成功
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
DWORD dwMHz;
DWORD dwSize=50;
regKey.QueryValue(dwMHz,"~MHz");
//获取RegisteredOwner的值
m_nMHz=dwMHz;
UpdateData(FALSE);
regKey.Close();//关闭注册表

}

获取CPU个数 

VOID GetSystemInfo(LPSYSTEM_INFO lpSystemInfo)

lpSystemInfo:指向存储当前计算机信息结构的指针

功能:获取当前计算机的信息

[cpp]
view plaincopyprint?

//SYSTEM_INFO结构包含有关当前计算机系统的信息。包括处理器类型,页面大小,内存地址,和OEM标识符。   
  
typedef struct _SYSTEM_INFO {  
  union {  
  DWORD dwOemId;        OemId过时的,不使用  
  struct {  
    WORD wProcessorArchitecture;    处理器架构  
    WORD wReserved;  
  };  
};  
  DWORD dwPageSize;        页面大小  
  LPVOID lpMinimumApplicationAddress;   应用程序最小地址  
  LPVOID lpMaximumApplicationAddress;   应用程序最大地址  
  DWORD dwActiveProcessorMask;     处理器掩码  
  DWORD dwNumberOfProcessors;     处理器数量  
  DWORD dwProcessorType;      处理器类型  
  DWORD dwAllocationGranularity;    虚拟内存分配粒度  
  WORD wProcessorLevel;       处理器级别  
  WORD wProcessorRevision;      处理器版本  
} SYSTEM_INFO, *LPSYSTEM_INFO;  

//SYSTEM_INFO结构包含有关当前计算机系统的信息。包括处理器类型,页面大小,内存地址,和OEM标识符。

typedef struct _SYSTEM_INFO {
union {
DWORD dwOemId;        OemId过时的,不使用
struct {
WORD wProcessorArchitecture;    处理器架构
WORD wReserved;
};
};
DWORD dwPageSize;        页面大小
LPVOID lpMinimumApplicationAddress;   应用程序最小地址
LPVOID lpMaximumApplicationAddress;   应用程序最大地址
DWORD dwActiveProcessorMask;     处理器掩码
DWORD dwNumberOfProcessors;     处理器数量
DWORD dwProcessorType;      处理器类型
DWORD dwAllocationGranularity;    虚拟内存分配粒度
WORD wProcessorLevel;       处理器级别
WORD wProcessorRevision;      处理器版本
} SYSTEM_INFO, *LPSYSTEM_INFO;


 

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton5()   
{  
  
    SYSTEM_INFO sysInfo;  
    GetSystemInfo(&sysInfo);  
    m_dwNum=sysInfo.dwNumberOfProcessors;  
    UpdateData(FALSE);  
}  

void CSystemHardwareInfoDlg::OnButton5()
{

SYSTEM_INFO sysInfo;
GetSystemInfo(&sysInfo);
m_dwNum=sysInfo.dwNumberOfProcessors;
UpdateData(FALSE);
}


 

获取显卡BIOS版本号 

获取HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System子键中获取VideoBiosVersion的键值。

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton6()   
{  
    CString strPath="HARDWARE\\DESCRIPTION\\System";  
    CRegKey regKey;  
    LONG lResult;  
    lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
      
    //打开注册表主键     
    if (lResult!=ERROR_SUCCESS)//读取键值不成功     
    {    
        AfxMessageBox("错误:无法查询有关的注册表信息");    
        return;    
    }    
    char chBiosVersion[2500];  
    DWORD dwSize=2500;  
    regKey.QueryValue((char*)chBiosVersion,"VideoBiosVersion",&dwSize);    
       
    m_strBiosID=chBiosVersion;   
    UpdateData(FALSE);    
    regKey.Close();//关闭注册表  
      
}  

void CSystemHardwareInfoDlg::OnButton6()
{
CString strPath="HARDWARE\\DESCRIPTION\\System";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

//打开注册表主键
if (lResult!=ERROR_SUCCESS)//读取键值不成功
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
char chBiosVersion[2500];
DWORD dwSize=2500;
regKey.QueryValue((char*)chBiosVersion,"VideoBiosVersion",&dwSize);

m_strBiosID=chBiosVersion;
UpdateData(FALSE);
regKey.Close();//关闭注册表

}

获取显卡BIOS更新日期 

获取HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System子键中获取VideoBiosDate的键值。

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton7()   
{  
    CString strPath="HARDWARE\\DESCRIPTION\\System";  
    CRegKey regKey;  
    LONG lResult;  
    lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
      
    //打开注册表主键     
    if (lResult!=ERROR_SUCCESS)//读取键值不成功     
    {    
        AfxMessageBox("错误:无法查询有关的注册表信息");    
        return;    
    }    
    char chVideoBiosDate[50];  
    DWORD dwSize=50;  
    regKey.QueryValue((char*)chVideoBiosDate,"VideoBiosDate",&dwSize);    
      
    m_strBiosDate=chVideoBiosDate;   
    UpdateData(FALSE);    
    regKey.Close();//关闭注册表  
      
}  

void CSystemHardwareInfoDlg::OnButton7()
{
CString strPath="HARDWARE\\DESCRIPTION\\System";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

//打开注册表主键
if (lResult!=ERROR_SUCCESS)//读取键值不成功
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
char chVideoBiosDate[50];
DWORD dwSize=50;
regKey.QueryValue((char*)chVideoBiosDate,"VideoBiosDate",&dwSize);

m_strBiosDate=chVideoBiosDate;
UpdateData(FALSE);
regKey.Close();//关闭注册表

}

获取系统BIOS版本号 

获取HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System子键中获取SystemBiosVersion的键值。

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton8()   
{  
    CString strPath="HARDWARE\\DESCRIPTION\\System";  
    CRegKey regKey;  
    LONG lResult;  
    lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
      
    //打开注册表主键     
    if (lResult!=ERROR_SUCCESS)//读取键值不成功     
    {    
        AfxMessageBox("错误:无法查询有关的注册表信息");    
        return;    
    }    
    char chBios[2500];  
    DWORD dwSize=2500;  
    regKey.QueryValue((char*)chBios,"SystemBiosVersion",&dwSize);    
      
    m_strBios=chBios;   
    UpdateData(FALSE);    
    regKey.Close();//关闭注册表  
      
}  

void CSystemHardwareInfoDlg::OnButton8()
{
CString strPath="HARDWARE\\DESCRIPTION\\System";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

//打开注册表主键
if (lResult!=ERROR_SUCCESS)//读取键值不成功
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
char chBios[2500];
DWORD dwSize=2500;
regKey.QueryValue((char*)chBios,"SystemBiosVersion",&dwSize);

m_strBios=chBios;
UpdateData(FALSE);
regKey.Close();//关闭注册表

}


获取系统BIOS更新日期 

获取HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System子键中获取SystemBiosDate的键值。

[cpp]
view plaincopyprint?

void CSystemHardwareInfoDlg::OnButton9()   
{  
    CString strPath="HARDWARE\\DESCRIPTION\\System";  
    CRegKey regKey;  
    LONG lResult;  
    lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
      
    //打开注册表主键     
    if (lResult!=ERROR_SUCCESS)//读取键值不成功     
    {    
        AfxMessageBox("错误:无法查询有关的注册表信息");    
        return;    
    }    
    char chBiosDate[50];  
    DWORD dwSize=50;  
    regKey.QueryValue((char*)chBiosDate,"SystemBiosDate",&dwSize);    
      
    m_strSystemBiosDate=chBiosDate;   
    UpdateData(FALSE);    
    regKey.Close();//关闭注册表  
      
      
}  

void CSystemHardwareInfoDlg::OnButton9()
{
CString strPath="HARDWARE\\DESCRIPTION\\System";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

//打开注册表主键
if (lResult!=ERROR_SUCCESS)//读取键值不成功
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
char chBiosDate[50];
DWORD dwSize=50;
regKey.QueryValue((char*)chBiosDate,"SystemBiosDate",&dwSize);

m_strSystemBiosDate=chBiosDate;
UpdateData(FALSE);
regKey.Close();//关闭注册表

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: