龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

如何在VC++中使用注册表(4)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
五、 删除键值RegDeketeKey 函数RegDeketeKey删除一个键及所有的子键。函数原型如下: LONG RegDeleteKey( HKEY hKey, LPCTSTR lpSubKEY ); 各个参数及返回值的含义如

  五、 删除键值RegDeketeKey

  函数RegDeketeKey删除一个键及所有的子键。函数原型如下:

  LONG RegDeleteKey(
  HKEY hKey,
  LPCTSTR lpSubKEY
  );

  各个参数及返回值的含义如下:

  参数hKey的含义同RegCreateKeyEx函数中的hKey参数。

  参数lpSubKey的含义同RegCreateKeyEx函数中的lpSubKey参数。

  六、 示例

  下面我们在Visual C++6.0或5.0环境中新建一基于对话框的工程。设置两个命令按钮,名为“查询用户信息”和“修改用户信息”,用来查询和修改注册表中的用户姓名和公司名称。需要说明的是,用户的信息位于系统注册表中KEY-CURRENT-USERSoftwareMicrsoftMS Setup(ACME)User Info的位置,键值名DefName和DefCompany分别表示用户的姓名和用户公司的名称。

  1、 查询用户信息的代码

  HKEY hKey; //定义有关的hKey,在查询结束时要关闭。

  LPCTSTR path="SoftwareMicrsoftMS Setup(ACME)User Info”;
  LONG return0=(::RegOpenKeyEx(HKEY_CURRENT_USER,path,0,KEY_READ,&hKey));
  if(return0!=ERROR_SUCCESS)
  {
  MessageBox("错误:无法打开有关的键!");
  Return;
  }
  LPBYTE username_Get=new BYTE[80];
  DWORD type_1=REG_SZ;
  DWORD cbData_1=80;
  LONG return1=::RegQueryValueEx(hKey,"Defname:,NULL,&type_1,
  username_Get,&cbData_1);
  if(return1!=ERROR_SUCCESS)
  {
  MessageBox("错误:无法查询有关注册表信息!");
  Return;
  }
  LPBYTE company_Get=new BYTE[80];
  DWORD type_2=REG_SZ;
  DWORD cbData_2=80;
  LONG return2=::RegQueryValueEx(hKey,"DefCompany",NULL,&type_2,
  company_Get,&cbData_2);
  if(return2!=ERROR_SUCCESS)
  {
  MessageBox("错误:无法查询有关注册表信息!");
  Return;
  }
  //将username_Get和company_Get转换为CString字符串,以便显示输出
  CString str_username=CString(username_Get);
  CString str_company=CString(company_Get);
  delete[] username_Get;
  delete[] company_Get;
  //程序结束前关闭已经打开的hKey
  ::RegCloseKey(hKey);
  ……
  字符串str_username和str_company表示查询的用户的姓名和公司的名称。

精彩图集

赞助商链接