VisualC++利用CRegKey和WIN32 API获取系统硬件信息

获取CPU名称、标识、制造商名称、主频、个数、显卡BIOS与系统BIOS版本号和更新日期源程序链接

 

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名称、标识和厂商等。

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的键值。

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的键值。


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类型。

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:指向存储当前计算机信息结构的指针

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

//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;


 

void CSystemHardwareInfoDlg::OnButton5() 
{

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


 

获取显卡BIOS版本号 

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

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的键值。


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的键值。

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的键值。

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();//关闭注册表
	
	
}


 


  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值