电脑教程中文网
首页  动态网站建设学习 程序  笑话  论坛 娱乐  交友 ADSL  峄城  成功者
中文名:电脑教程中文网,收集了大量的电脑教程! 编程技术文档 游戏开发 笑话站暂时关闭 设为首页
网页设计 HTML | Dreamweaver | CSS | Firework | FrontPage WEB开发 ASP | JSP | PHP | .NET | CGI | JS | VBS | XML | IIS6 | Apache | PWS
程序设计 Java | C++ |VC++ | C# | Delphi | VB | C语言 | 汇编 | Pascal | Perl 数据库 MSSQL | MySQL | Access | VF | Oracle | DB2 | SYBASE |
办公软件 Word | Excel | WPS | PowerPoint 动画平面 Photoshop | ACDSee | 3Dmax | Flash | Coreldraw |
操作系统 Windows 2000 | Windows XP | Windows 2003 | SCO Unix | Windows Vista | unix、Linux | 综合| 服务器 | 系统安全| 黑客技术
其  他 UltraDev | DOS | UML | PWS | Powerbuilder | 开发心得 | 设计理念 | 病毒库 | 其他 | LightTPD (分类排序给您带来不便请谅解)
推  荐: Java文档500篇》《ASP.NET与相关数据库技术高级指南》《TC图形函数详解》《C函数速查手册》《C语言编程宝典之一》《MFC深入浅出》《黑客零起点》《VC++ 编程指南》《JScript 用户指南》 《CSS教程宝典》《Microsoft Jet SQL 参考》《delphi技巧集合》《MySQL 4.1.0 中文参考手册》《MySQL中文手册
【导航】 您现在的位置 : 首页 - VC教程 - 《VC++精华技术文档收集(2)》- 编程解除注册表和IE主页的锁定

编程解除注册表和IE主页的锁定

日期:2005-8-16 10:29:07    作者:程红秀   人气:   来源:网络




编程解除注册表和IE主页的锁定

 

摘要:利用Visual C++编程来解除注册表的锁定和IE主页不能修改的问题

关键词:注册表 API函数

 

一、提出问题

你是否有过这样的痛苦经历:不知什么时候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

解除锁定

双击IDIDC_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);

}

 

同样,双击IDIDC_UNLOCKHOMEPAGE的按扭添加消息处理函数:

void CRegDlg:: OnUnlockhomepage()

{

   HKEY hkey;

LPCTSTR strSubKey="Software\\Policies\\Microsoft\\Internet Explorer\\Control Panel",,

   if(::RegOpenKeyEx(HKEY_CURRENT_USER,

                   strSubKey,

                                0,

                                KEY_READ|KEY_WRITE,

                                &hkey) !=ERROR_SUCCESS)

      return;

   DWORD dwValue=0;

   if(::RegSetValueEx(hkey,

          "HomePage",

                               NULL,

                               REG_DWORD,

                               (LPBYTE)&dwValue,            //LPBYTEunsigned char*

                               sizeof(DWORD) ) !=ERROR_SUCCESS)

{

          MessageBox("设置注册表相关键值失败","错误",

MB_OK|MB_ICONEXCLAMATION);

          return;

   }

   else

          MessageBox("你已经成功地解除了IE主页的锁定","恭喜你",

MB_OK|MB_ICONINFORMATION); 

   ::RegCloseKey(hkey);    

}

为了简化编程,“锁定注册表”和“锁定IE主页”的功能不通过用API函数操作注册表来完成,而是编写两个注册表文件,然后导入注册表实现。

建立DisableRegistryTools.reg文件,内容如下:

REGEDIT4

 

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\]

"DisableRegistryTools"=dword:00000001

建立LockHomePage.reg文件,内容如下:

REGEDIT4

 

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]

"HomePage"=dword:00000001

 

然后添加消息处理函数:

void CRegDlg::OnLock()

{

   ::ShellExecute(GetSafeHwnd(),"open",” DisableRegistryTools.reg”,NULL,"",SW_SHOW);

}

void CRegDlg::OnLockHomepage()

{

   ::ShellExecute(GetSafeHwnd(),"open","LockHomePage.reg",NULL,"",SW_SHOW)

}

 

四、经验总结

     好了,现在编译链接便可运行了,有了这个小程序,你从此就不用再害怕这些雕虫小技了。本程序在Windows XP, Visual C++ 6.0环境下调试通过

 




网站首页 - 友情链接 - 公司简介 - 联系方式 - 广告投放 - 客户服务 - 错误报告 - 免责声明 - About us
CLDE.NET电脑教程中文网版权所有 未经许可禁止镜象和复制本站资料 MSN:CLDE_NET@hotmail.com
技术支持:CLDE.NET信息中心 鲁ICP备05039940号 友情链接QQ:784079(隐)