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
Recent Comments