206上位机VC MFC获取操作系统版本序列号等信息
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);
- }
- }
复制代码我们来演示下功能实现的整个过程
|