工控编程吧
标题:
378上位机VC MFC通过注册表获取BIOS全部信息
[打印本页]
作者:
qq263946146
时间:
2016-9-17 10:47
标题:
378上位机VC MFC通过注册表获取BIOS全部信息
(, 下载次数: 0)
上传
点击文件名下载附件
获取BIOS全部信息
功能展示
BIOS是英文“Basic Input Output System”的缩略词,直译过来后中文名称就是“基本输入输出系统”。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序。我们当前例程通过注册表获取BIOS的全部信息,效果如图。点击按钮,例程就会从注册表读取BIOS全部信息并全部显示出来
要点提示
BIOS的信息都保存在注册表子键HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS下,子键右侧全部的健值项就是BIOS的全部信息,BaseBoardManufacturer为生产厂家,BaseBoardProduct为产品型号等
实现功能
1.新建基于对话框的应用程序
2.添加列表控件关联变量CListCtrl m_List;,添加按钮<获取BIOS全部信息>关联点击函数
void CGkbc8Dlg::OnGet() {AllRegKeyValue(HKEY_LOCAL_MACHINE,"HARDWARE\\DESCRIPTION\\System\\BIOS");}
调用的函数定义为
BOOL CGkbc8Dlg::AllRegKeyValue(HKEY hRootKey, CString sSubKey)
{
HKEY hSubKey;
long lResult;
lResult = RegOpenKeyEx(hRootKey, sSubKey, 0, KEY_READ, &hSubKey);// 打开注册表
if(ERROR_SUCCESS != lResult)
return FALSE;
//<>
const UINT nSize = 256;
UINT nIndex = 0; //枚举索引
CString sTemp;
TCHAR Name[nSize] = {0}; // 键/值名称
DWORD NameSiz = nSize*sizeof(TCHAR);
DWORD Type = REG_SZ; // 值类型
TCHAR sData[nSize] = {0}; // 值数据
DWORD DataSiz = nSize*sizeof(TCHAR);
lResult = RegEnumValue(hSubKey,nIndex,Name,&NameSiz,0,&Type, (unsigned char *)sData, &DataSiz);
while (lResult == ERROR_SUCCESS)
{
m_List.InsertItem(m_List.GetItemCount(), "");//插入一行
m_List.SetItemText(m_List.GetItemCount()-1, 0, Name);
if(Type == REG_BINARY) sTemp = "REG_BINARY"; //二进制数据
if(Type == REG_DWORD) sTemp = "REG_DWORD"; //32位双字节数据
if(Type == REG_SZ) sTemp = "REG_SZ"; //以0结尾的字符串
if(Type == REG_DWORD_BIG_ENDIAN) sTemp = "REG_DWORD_BIG_ENDIAN"; //高位排在底位的双字
if(Type == REG_EXPAND_SZ) sTemp = "REG_BINARY"; //扩展字符串,可以加入变量如%PATH%
if(Type == REG_LINK) sTemp = "REG_LINK"; //UNICODE 符号链接
if(Type == REG_RESOURCE_LIST) sTemp = "REG_RESOURCE_LIST"; //设备驱动程序资源列表
if(Type == REG_MULTI_SZ) sTemp = "REG_MULTI_SZ"; //多字符串
m_List.SetItemText(m_List.GetItemCount()-1, 1, sTemp);
if(sTemp == "REG_DWORD")
{
DWORD dwValue ;
dwValue = *(DWORD*)sData;
wsprintf(sData,"%d",dwValue);
}
m_List.SetItemText(m_List.GetItemCount()-1, 2, sData);
nIndex++;
NameSiz = nSize*sizeof(TCHAR);//必须重新赋值
DataSiz = nSize*sizeof(TCHAR);
lResult = RegEnumValue(hSubKey,nIndex,Name,&NameSiz,0,&Type, (unsigned char *)sData, &DataSiz);
}
RegCloseKey(hSubKey);
return TRUE;
}
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/4ff2bb7694663613b540c1843921b3ca/0/0/w_19rswn0jtd.swf-albumId=6292814909-tvId=6292814909-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件 [weixinlianxi]1[/weixinlianxi]
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4