以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  VC 下注册表的操作  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=41326)


--  作者:卷积内核
--  发布时间:12/18/2006 9:26:00 AM

--  VC 下注册表的操作
1.查看注册表
     HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
     LPCTSTR data_Set = "Software\\Microsoft\\Windows\\CurrentVersion\\";
     //1表示根鍵的位置2表示打开的地方3必须为ZEOR4表示打开方式5....
     long ret0 = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY);
     if(ret0 != ERROR_SUCCESS) //如果无法打开hKEY,则终止程序
     {
           MessageBox("错误:无法打开有关的HKEY");
           return;
     }
     //查询有关的数据(这里表示用户名
     LPBYTE owner_Get = new BYTE[80];
     DWORD type_1 = REG_SZ;
     DWORD cbData_1 = 80;
     long ret1 = ::RegQueryValueEx(hKEY, "CommonFilesDir", NULL, &type_1, owner_Get, &cbData_1);
     if(ret1 != ERROR_SUCCESS)
     {
           MessageBox("错误,无法查询有关注册表的信息");
           return;
     }
     CString strname;
     strname = CString(owner_Get);
     MessageBox(strname);
     delete[] owner_Get;
     ::RegCloseKey(hKEY);

2.修改注册表
     HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
     LPCTSTR data_Set = "Software\\Microsoft\\Windows\\CurrentVersion\\";
     //1表示根鍵的位置2表示打开的地方3必须为ZEOR4表示打开方式5....
     long ret0 = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY);
     if(ret0 != ERROR_SUCCESS) //如果无法打开hKEY,则终止程序
     {
           MessageBox("错误:无法打开有关的HKEY");
           return;
     }
     //查询有关的数据(这里表示用户名
     LPBYTE owner_Set = 你已取出鍵值的内容
     DWORD type_1 = REG_SZ;
     DWORD cbData_1 = 你取出键的长度+1
     long ret1 = ::RegSetValueEx(hKEY, "RegisteredOwner", NULL, type_1, owner_Set, cbData_1);
     if(ret1 != ERROR_SUCCESS)
     {
           MessageBox("错误,无法查询有关注册表的信息");
           return;
     }
     CString strname;
     strname = CString(owner_Get);
     MessageBox(strname);
     delete[] owner_Get;
     ::RegCloseKey(hKEY);

3.增加注册表子项
     //键名
     CString str = "{64FF040-5081-101B}";
     LPBYTE addKey = new BYTE[str.GetLength() +1];
     CString_To_LPBYTE(str);

     HKEY hKey;
     long res = RegCreateKey(HKEY_CLASSES_ROOT, "*\\shellex\\添加的条目", &hKey);
     //生成注册键值
     res = RegSetValueEx(hKey, "", NULL, REG_SZ, addKey, str.GetLength() +1);
     delete[] addKey;
     RegCloseKey(hKey);

4.删除注册表
     long res;
     res = RegDeleteKey(HKEY_CLASSES_ROOT", "*\\shellex\\新增的条目");


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
5,175.781ms