QQ登录

只需一步,快速开始

206上位机VC MFC获取操作系统版本序列号等信息

[ 复制链接 ]

206上位机VC MFC获取操作系统版本序列号等信息

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浏览器版本号>关联函数实现相应功能
  1. void CGkbc8Dlg::OnIeversion()
  2. {
  3.         CString sText;
  4.         CListBox* pList = (CListBox*)GetDlgItem(IDC_LIST1);//列表控件指针
  5.         HKEY hKey;
  6.         LPCTSTR StrKey="Software\\Microsoft\\Internet Explorer";
  7.         DWORD dwSize=MAX_PATH,dwType=REG_SZ;
  8.         char String[256];
  9.         LPCSTR KeyValue="Version";
  10.         if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
  11.         {
  12.                 if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
  13.                 {
  14.                         sText="IE浏览器的版本号:";
  15.                         sText+=String;
  16.                         pList->InsertString(0,sText);
  17.                 }
  18.                 ::RegCloseKey(hKey);
  19.         }        
  20. }
  21. void CGkbc8Dlg::OnGet()
  22. {
  23.         CString sText;
  24.         CListBox* pList = (CListBox*)GetDlgItem(IDC_LIST1);//列表控件指针
  25.         pList->ResetContent();//清空内容
  26.         HKEY hKey;
复制代码
  1. LPCTSTR StrKey="Software\\Microsoft\\Windows NT\\CurrentVersion";
  2.         DWORD dwSize=MAX_PATH,dwType=REG_SZ;
  3.         char String[256];        
  4. LPCSTR KeyValue="ProductId";
  5.         if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
  6.         {        
  7.                 if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
  8.                 {
  9.                         sText="操作系统安装序列号:";
  10.                         sText+=String;
  11.                         pList->InsertString(0,sText);
  12.                 }
  13.                 ::RegCloseKey(hKey);
  14.         }
  15.         KeyValue="ProductName";
  16.         if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
  17.         {
  18.                 if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
  19.                 {
  20.                         sText="操作系统的产品名称:";
  21.                         sText+=String;
  22.                         pList->InsertString(0,sText);
  23.                 }
  24.                 ::RegCloseKey(hKey);
  25.         }
  26.         //<>               
  27.         KeyValue="CurrentBuild";
  28.         if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
  29.         {
  30.                 if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
  31.                 {
  32.                         sText="Windows的内建号:";
  33.                         sText+=String;
  34.                         pList->InsertString(0,sText);
  35.                 }
  36.                 ::RegCloseKey(hKey);
  37.         }
  38.         KeyValue="CurrentBuildNumber";
  39.         
复制代码
  1. if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
  2.         {
  3.                 if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
  4.                 {
  5.                         sText="Windows的版本名称::";
  6.                         sText+=String;
  7.                         pList->InsertString(0,sText);
  8.                 }
  9.                 ::RegCloseKey(hKey);
  10.         }
  11.         //<>               
  12.         KeyValue="CurrentVersion";
  13.         if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
  14.         {
  15.                 if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
  16.                 {
  17.                         sText="Windows的版本号:";
  18.                         sText+=String;
  19.                         pList->InsertString(0,sText);
  20.                 }
  21.                 ::RegCloseKey(hKey);
  22.         }
  23. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:206.上位机VC MFC获取操作系统版本序列号等信息.rar 
文件大小:138.99 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索