如何在VC++中使用注册表(4)
五、 删除键值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表示查询的用户的姓名和公司的名称。
- 上一篇:VC++实现拨号上网程序
- 下一篇:在VC中修改显示器的分辩率和色彩

