信息化 频道

创业经理人,职与权上的走钢丝者


【IT168技术文档】

  一、提出问题

  你是否有过这样的痛苦经历:不知什么时候IE主页被修改,想该回去的时候可是发现地址栏已经被锁定,该不了!于是想通过注册表来恢复,可是输入”regedit”回车后,却弹出“注册表已被管理员停用”!是不是很郁闷?

  其实,这都是上网的时候中了病毒而造成了。恢复注册表有很多方法,这里我介绍如何用Visual C++编程来解决。

  二、分析问题:

  注册表被锁定是由于

  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System下的DWORD值  “DisableRegistryTools”被修改为“1”的缘故,将其键值恢复为“0”,或者直接删除该项即可恢复注册表的使用。

  IE首页被锁定则是由于在注册表编辑器中
  HKEY_CURRENT_USER\Software\Policies\Microsoft\ Internet Explorer\Control Panel。
”HomePage”的值被改为“1”,解决的办法是将其改为”1”或直接删除该键值项,再重新打开“Internet属性”就可以更改主页设置了。



  三、解决问题

  首先要介绍将要甬道的几个操作注册表的API函数。(只给出函数的功能,具体参数和用法可参考MSDN或相关的书籍)

  RegOpenKeyEx() 打开一个指定键

  RegDeleteValue() 在注册表中从一个键中删除一个值

  RegSetValueEx() 向一个打开的注册表的键中存储数据

  RegCloseKey() 关闭打开的注册表句柄

  打开Visual C++,建立一个对话框程序Reg. 添加四个按扭控件:

  ID

  标题

  IDC_LOCKREG

  锁定注册表

  IDC_UNLOCKREG

  解除锁定

  IDC_LOCKHOMEPAGE

  锁定IE主页

  IDC_UNLOCKHOMEPAGE

  解除锁定

  双击ID为IDC_UNLOCKREG的按扭,添加消息处理函数:
void CRegDlg::OnUnlockReg() { HKEY hkey; LPCTSTR strSubKey="Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\system", if(::RegOpenKeyEx(HKEY_CURRENT_USER, strSubKey, 0, KEY_READ|KEY_WRITE, &hkey) !=ERROR_SUCCESS) return; if(::RegDeleteValue(hkey,"DisableRegistryTools") !=ERROR_SUCCESS) return ; else MessageBox(“你已经成功解除了注册表的锁定”,”恭喜你”,MB_OK | MB_ICONINFORMATION); ::RegCloseKey(hkey); }
0
相关文章