我是靠谱客的博主 受伤过客,最近开发中收集的这篇文章主要介绍通过注册表获取硬件信息 ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

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_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor子键中获取ProcessorNameString的键值。该注册表子键存储了当前计算机的处理器信息,如CPU名称、标识和厂商等。

[cpp] view plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton1()   
  2. {  
  3.     CString strPath="HARDWARE\DESCRIPTION\System\CentralProcessor\0";  
  4.     CRegKey regKey;  
  5.     LONG lResult;  
  6.     lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  7.   
  8.     //打开注册表主键     
  9.     if (lResult!=ERROR_SUCCESS)//读取键值不成功     
  10.     {    
  11.         AfxMessageBox("错误:无法查询有关的注册表信息");    
  12.         return;    
  13.     }    
  14.     char chCPUName[50];    
  15.     DWORD dwSize=50;    
  16.     regKey.QueryValue(chCPUName,"ProcessorNameString",&dwSize);    
  17.     //获取RegisteredOwner的值     
  18.     m_strCPUName=chCPUName;    
  19.     UpdateData(FALSE);    
  20.     regKey.Close();//关闭注册表  
  21.       
  22. }  
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_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor子键中获取Identifier的键值。

[cpp] view plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton2()   
  2. {  
  3.     CString strPath="HARDWARE\DESCRIPTION\System\CentralProcessor\0";  
  4.     CRegKey regKey;  
  5.     LONG lResult;  
  6.     lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  7.       
  8.     //打开注册表主键     
  9.     if (lResult!=ERROR_SUCCESS)//读取键值不成功     
  10.     {    
  11.         AfxMessageBox("错误:无法查询有关的注册表信息");    
  12.         return;    
  13.     }    
  14.     char chCPUID[50];    
  15.     DWORD dwSize=50;    
  16.     regKey.QueryValue(chCPUID,"Identifier",&dwSize);    
  17.     //获取RegisteredOwner的值     
  18.     m_strCPUIdentifier=chCPUID;    
  19.     UpdateData(FALSE);    
  20.     regKey.Close();//关闭注册表  
  21.       
  22. }  
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_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor子键中获取VendorIdentifier的键值。


[cpp] view plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton3()   
  2. {  
  3.     CString strPath="HARDWARE\DESCRIPTION\System\CentralProcessor\0";  
  4.     CRegKey regKey;  
  5.     LONG lResult;  
  6.     lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  7.       
  8.     //打开注册表主键     
  9.     if (lResult!=ERROR_SUCCESS)//读取键值不成功     
  10.     {    
  11.         AfxMessageBox("错误:无法查询有关的注册表信息");    
  12.         return;    
  13.     }    
  14.     char chVendor[50];    
  15.     DWORD dwSize=50;    
  16.     regKey.QueryValue(chVendor,"VendorIdentifier",&dwSize);    
  17.     //获取RegisteredOwner的值     
  18.     m_strVendorID=chVendor;    
  19.     UpdateData(FALSE);    
  20.     regKey.Close();//关闭注册表  
  21.       
  22. }  
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_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor子键中获取~MHz的键值。注意为DWORD类型。

[cpp] view plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton4()   
  2. {  
  3.     CString strPath="HARDWARE\DESCRIPTION\System\CentralProcessor\0";  
  4.     CRegKey regKey;  
  5.     LONG lResult;  
  6.     lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  7.       
  8.     //打开注册表主键     
  9.     if (lResult!=ERROR_SUCCESS)//读取键值不成功     
  10.     {    
  11.         AfxMessageBox("错误:无法查询有关的注册表信息");    
  12.         return;    
  13.     }    
  14.     DWORD dwMHz;   
  15.     DWORD dwSize=50;    
  16.     regKey.QueryValue(dwMHz,"~MHz");    
  17.     //获取RegisteredOwner的值     
  18.     m_nMHz=dwMHz;    
  19.     UpdateData(FALSE);    
  20.     regKey.Close();//关闭注册表  
  21.       
  22. }  
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 plain copy print ?
  1. //SYSTEM_INFO结构包含有关当前计算机系统的信息。包括处理器类型,页面大小,内存地址,和OEM标识符。   
  2.   
  3. typedef struct _SYSTEM_INFO {  
  4.   union {  
  5.   DWORD dwOemId;        OemId过时的,不使用  
  6.   struct {  
  7.     WORD wProcessorArchitecture;    处理器架构  
  8.     WORD wReserved;  
  9.   };  
  10. };  
  11.   DWORD dwPageSize;        页面大小  
  12.   LPVOID lpMinimumApplicationAddress;   应用程序最小地址  
  13.   LPVOID lpMaximumApplicationAddress;   应用程序最大地址  
  14.   DWORD dwActiveProcessorMask;     处理器掩码  
  15.   DWORD dwNumberOfProcessors;     处理器数量  
  16.   DWORD dwProcessorType;      处理器类型  
  17.   DWORD dwAllocationGranularity;    虚拟内存分配粒度  
  18.   WORD wProcessorLevel;       处理器级别  
  19.   WORD wProcessorRevision;      处理器版本  
  20. } 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 plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton5()   
  2. {  
  3.   
  4.     SYSTEM_INFO sysInfo;  
  5.     GetSystemInfo(&sysInfo);  
  6.     m_dwNum=sysInfo.dwNumberOfProcessors;  
  7.     UpdateData(FALSE);  
  8. }  
void CSystemHardwareInfoDlg::OnButton5() 
{

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


 

获取显卡BIOS版本号 

获取HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystem子键中获取VideoBiosVersion的键值。

[cpp] view plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton6()   
  2. {  
  3.     CString strPath="HARDWARE\DESCRIPTION\System";  
  4.     CRegKey regKey;  
  5.     LONG lResult;  
  6.     lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  7.       
  8.     //打开注册表主键     
  9.     if (lResult!=ERROR_SUCCESS)//读取键值不成功     
  10.     {    
  11.         AfxMessageBox("错误:无法查询有关的注册表信息");    
  12.         return;    
  13.     }    
  14.     char chBiosVersion[2500];  
  15.     DWORD dwSize=2500;  
  16.     regKey.QueryValue((char*)chBiosVersion,"VideoBiosVersion",&dwSize);    
  17.        
  18.     m_strBiosID=chBiosVersion;   
  19.     UpdateData(FALSE);    
  20.     regKey.Close();//关闭注册表  
  21.       
  22. }  
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_MACHINEHARDWAREDESCRIPTIONSystem子键中获取VideoBiosDate的键值。


[cpp] view plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton7()   
  2. {  
  3.     CString strPath="HARDWARE\DESCRIPTION\System";  
  4.     CRegKey regKey;  
  5.     LONG lResult;  
  6.     lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  7.       
  8.     //打开注册表主键     
  9.     if (lResult!=ERROR_SUCCESS)//读取键值不成功     
  10.     {    
  11.         AfxMessageBox("错误:无法查询有关的注册表信息");    
  12.         return;    
  13.     }    
  14.     char chVideoBiosDate[50];  
  15.     DWORD dwSize=50;  
  16.     regKey.QueryValue((char*)chVideoBiosDate,"VideoBiosDate",&dwSize);    
  17.       
  18.     m_strBiosDate=chVideoBiosDate;   
  19.     UpdateData(FALSE);    
  20.     regKey.Close();//关闭注册表  
  21.       
  22. }  
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_MACHINEHARDWAREDESCRIPTIONSystem子键中获取SystemBiosVersion的键值。

[cpp] view plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton8()   
  2. {  
  3.     CString strPath="HARDWARE\DESCRIPTION\System";  
  4.     CRegKey regKey;  
  5.     LONG lResult;  
  6.     lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  7.       
  8.     //打开注册表主键     
  9.     if (lResult!=ERROR_SUCCESS)//读取键值不成功     
  10.     {    
  11.         AfxMessageBox("错误:无法查询有关的注册表信息");    
  12.         return;    
  13.     }    
  14.     char chBios[2500];  
  15.     DWORD dwSize=2500;  
  16.     regKey.QueryValue((char*)chBios,"SystemBiosVersion",&dwSize);    
  17.       
  18.     m_strBios=chBios;   
  19.     UpdateData(FALSE);    
  20.     regKey.Close();//关闭注册表  
  21.       
  22. }  
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_MACHINEHARDWAREDESCRIPTIONSystem子键中获取SystemBiosDate的键值。

[cpp] view plain copy print ?
  1. void CSystemHardwareInfoDlg::OnButton9()   
  2. {  
  3.     CString strPath="HARDWARE\DESCRIPTION\System";  
  4.     CRegKey regKey;  
  5.     LONG lResult;  
  6.     lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);  
  7.       
  8.     //打开注册表主键     
  9.     if (lResult!=ERROR_SUCCESS)//读取键值不成功     
  10.     {    
  11.         AfxMessageBox("错误:无法查询有关的注册表信息");    
  12.         return;    
  13.     }    
  14.     char chBiosDate[50];  
  15.     DWORD dwSize=50;  
  16.     regKey.QueryValue((char*)chBiosDate,"SystemBiosDate",&dwSize);    
  17.       
  18.     m_strSystemBiosDate=chBiosDate;   
  19.     UpdateData(FALSE);    
  20.     regKey.Close();//关闭注册表  
  21.       
  22.       
  23. }  
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();//关闭注册表
	
	
}

最后

以上就是受伤过客为你收集整理的通过注册表获取硬件信息 的全部内容,希望文章能够帮你解决通过注册表获取硬件信息 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部