IE修复小工具(修改注册表)C++版

VC版比Delphi复杂很多,但更加完善了。不过功夫不负有心人,经过努力,这个VC版读写注册表的操作终于还是被我实现了。

方法:新建一个mfc基于对话框的应用程序,

VC中主要是API函数的属性比较多,所以感觉比较复杂,不像Delphi中Registry的Rootkey,OpenKey,WriteString,WriteInteger等方法根本就没多少参数要记。

这个程序用到了以下几个函数

RegOpenKeyEx()  打开一个指定键

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

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

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

ShellExecute() 打开执行指定文件

其他注册表的修改与Delphi版类似

这里记录几条关键代码,用来加深印象。
打开指定键,&hkey通过引用被附了值。


RegOpenKeyEx(HKEY_CURRENT_USER,strSubKey,0,KEY_READ|KEY_WRITE,&hkey)

删除DisableRegistryTools项

RegDeleteValue(hkey,”DisableRegistryTools”)

在注册表中写入内容
1、REG_DWORD型

WORD dwValue=0;
::RegSetValueEx(hkey,L”HomePage”,0,REG_DWORD,(LPBYTE)&dwValue,sizeof(DWORD));

2、REG_SZ型(SZ表示string zero,是字符串型)

LPCTSTR lpszValue=_T(“about:blank”);
::RegSetValueEx(hkey,L”Start Page”,0,REG_SZ,(CONST BYTE*)lpszValue,(lstrlen(lpszValue)+1)*sizeof(TCHAR));

遇到问题:
出现错误 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [15]”转换为“LPCTSTR”
解决方法:1、可在双引号字符串用_T(“”)引用起来 (也可以用 L”")
2、或者在工程选项里面将编码改成Not Set

程序下载下载文件 点击下载此文件

这个实例可参考下面文章
http://www.cnblogs.com/kaixin110/archive/2008/01/19/1045339.html

Categories: 技术爱好

Leave a Comment