工控编程吧
标题:
206上位机VC MFC获取操作系统版本序列号等信息
[打印本页]
作者:
qq263946146
时间:
2016-1-29 22:11
标题:
206上位机VC MFC获取操作系统版本序列号等信息
(, 下载次数: 1)
上传
点击文件名下载附件
206上位机VC MFC获取操作系统版本序列号等信息
功能展示
我们开发在程序有在个别版本会有不兼容问题,所以在程序运行前就得获取当前操作系统相关信息进行兼容性判断,我们当前例程实现操作系统名称,安装版本名称版本号等一系列与操作系统相关的信息,效果如图;
要点提示
操作系统的相关信息都保存在系统的注册表内,我们只要调用函数RegQueryValueEx()获取注册表指定路径下的键值就可以;比如操作系统名称保存在HKEY_LOCAL_MACHINE\\Software\\Microsoft\\WindowsNT\\CurrentVersion\\ProductName;
一.()函数原型:LONG RegQueryValueEx( HKEY hKey, LPCTSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData );
参数含义:
1.HKEY hKey,//一个已打开项的句柄,或者指定一个标准项名
2.LPCTSTR lpValueName,//要查询注册表键值的名字字符串,注册表键的名字,以空字符结束。
3.LPDWORD lpReserved,//未用,设为零
4.LPDWORD lpType,//用于装载取回数据类型的一个变量
5.LPBYTE lpData,//用于装载指定值的一个缓冲区
6.LPDWORD lpcbData,//用于装载lpData缓冲区长度的一个变量。//一旦返回,它会设为实际装载到缓冲区的字节数
返回类型为Long, ERROR_SUCCESS(0L)表示成功。其他任何值都代表一个错误代码
实现功能
1.新建基于对话框的应用程序
2.拖拽一列表控件ID为IDC_LIST1用于罗列出获得的信息;
拖拽按钮<获得操作系统版本序列号信息><IE浏览器版本号>关联函数实现相应功能
void CGkbc8Dlg::OnIeversion()
{
CString sText;
CListBox* pList = (CListBox*)GetDlgItem(IDC_LIST1);//列表控件指针
HKEY hKey;
LPCTSTR StrKey="Software\\Microsoft\\Internet Explorer";
DWORD dwSize=MAX_PATH,dwType=REG_SZ;
char String[256];
LPCSTR KeyValue="Version";
if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
{
if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
{
sText="IE浏览器的版本号:";
sText+=String;
pList->InsertString(0,sText);
}
::RegCloseKey(hKey);
}
}
void CGkbc8Dlg::OnGet()
{
CString sText;
CListBox* pList = (CListBox*)GetDlgItem(IDC_LIST1);//列表控件指针
pList->ResetContent();//清空内容
HKEY hKey;
复制代码
LPCTSTR StrKey="Software\\Microsoft\\Windows NT\\CurrentVersion";
DWORD dwSize=MAX_PATH,dwType=REG_SZ;
char String[256];
LPCSTR KeyValue="ProductId";
if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
{
if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
{
sText="操作系统安装序列号:";
sText+=String;
pList->InsertString(0,sText);
}
::RegCloseKey(hKey);
}
KeyValue="ProductName";
if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
{
if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
{
sText="操作系统的产品名称:";
sText+=String;
pList->InsertString(0,sText);
}
::RegCloseKey(hKey);
}
//<>
KeyValue="CurrentBuild";
if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
{
if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
{
sText="Windows的内建号:";
sText+=String;
pList->InsertString(0,sText);
}
::RegCloseKey(hKey);
}
KeyValue="CurrentBuildNumber";
复制代码
if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
{
if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
{
sText="Windows的版本名称::";
sText+=String;
pList->InsertString(0,sText);
}
::RegCloseKey(hKey);
}
//<>
KeyValue="CurrentVersion";
if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
{
if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
{
sText="Windows的版本号:";
sText+=String;
pList->InsertString(0,sText);
}
::RegCloseKey(hKey);
}
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/c0bc615793b48357fec3467135ff85fb/0/0/w_19rtalw7v1.swf-albumId=5264866209-tvId=5264866209-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4