|
如何在VC++中使用注册表(3) ·参数lpData为一个指向保存返回值的变量的指针。如果不需要返回值,该参数可以为NULL。 ·参数lpcbData为一个指向保存返回值长度的变量的指针。其中长度以字节为单位。如果数据类型为REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ,那么长度也包括结尾的零字符,只有在参数lpData为NULL时,参数lpcbData才可以为NULL。 ·返回值同RegCreateKeyEx函数的返回值。 四、 设置键值RegSetValueEx RegSetValueEx函数可以设置注册表中键的值,函数原型如下: LONG RegSetValueEx( HKEY hKey, LPCTSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData ); 各个参数及返回值的含义如下: ·参数hKey的含义同RegCreateKeyEx函数中的hKey参数。 ·参数lpValueName为一个指向包含值名的字符串指针。 ·Reserved保留,通常必须设置为0。 ·参数dwType确定了设置的值的类型同RegQueryValueKeyEx的lyType参数。 ·参数lpData为一个指向包含数据的缓冲区的指针。 ·参数cbData以字节为单位,指定数据的长度。 ·返回值同RegCreateKeyEx函数的返回值。 五、 删除键值RegDeketeKey 函数RegDeketeKey删除一个键及所有的子键。函数原型如下: LONG RegDeleteKey( HKEY hKey, LPCTSTR lpSubKEY ); 各个参数及返回值的含义如下: ·参数hKey的含义同RegCreateKeyEx函数中的hKey参数。 ·参数lpSubKey的含义同RegCreateKeyEx函数中的lpSubKey参数。 六、 示例 下面我们在Visual C++6.0或5.0环境中新建一基于对话框的工程。设置两个命令按钮,名为“查询用户信息”和“修改用户信息”,用来查询和修改注册表中的用户姓名和公司名称。需要说明的是,用户的信息位于系统注册表中\KEY-CURRENT-USER\Software\Micrsoft\MS Setup(ACME)\User Info\的位置,键值名DefName和DefCompany分别表示用户的姓名和用户公司的名称。 1、 查询用户信息的代码 HKEY hKey; //定义有关的hKey,在查询结束时要关闭。 LPCTSTR path="Software\\Micrsoft\\MS 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字符串,以便显示输出
|