以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 用Visual C++实现注册表简单操作 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=64010) |
-- 作者:卷积内核 -- 发布时间:6/24/2008 10:00:00 AM -- 用Visual C++实现注册表简单操作 Windows的注册表中包含了Windows的系统配置、PC机的硬件配置、Win32应用程序和用户的其他设置信息。注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键),每个分支又由许多的键和键值组成,而每个键则代表一个特定的配置项目。在注册表中键可以包括子键和值。我们可以对他做个比喻,键就是目录,而子键和值可以看成文件,这样比喻可能不科学但是很实际。在Windows 98下注册表包括在两个文件内,他们是user.dat和system.dat两个文件。System.dat包括标准的系统信息,他们被保存在HKEY_LOCAL_MACHINE的根键内。User.dat文件包括用户指定的信息,如用户策略,桌面设定等等。 为了平时查看方便,Windows为我们准备了一个小程序regedit.exe。执行他就可以看到注册表的树状结构。在实际编程工作中,我们经常会遇到如何在Visual C++中对Windows注册表整个树状结构信息进行访问和修改的问题,如查询和修改注册表中用户姓名和公司名称的有关信息等。为此,本实例将相关的注册表操作封装到函数中,并通过一个简单的例程给出了上述函数的调用方法,该例程可以在注册表中创建、删除、显示一个键值,同时还可以清空最近阅读过的文档历史记录。程序的界面效果如图一所示: 图一、操作注册表示例程序界面效果图
|
-- 作者:卷积内核 -- 发布时间:6/24/2008 10:03:00 AM -- 三、程序代码 ///////////////////////////////////// SetValue_D ( HKEY ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName, |
-- 作者:卷积内核 -- 发布时间:6/24/2008 10:04:00 AM -- DeleteKey ( HKEY ReRootKey,TCHAR *ReSubKey,TCHAR *ReKeyName) { //删除子项函数 int i=0; //操作结果:0==succeed if((RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey))==ERROR_SUCCESS) { if((RegDeleteKey(hKey,ReKeyName))!=ERROR_SUCCESS) { //AfxMessageBox("清除指定项失败!"); i=1; } RegCloseKey(hKey); } else { //AfxMessageBox("错误:无法打开有关的hKEY"); i=1; } return i; } DeleteValue (HKEY ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName) void CRegDemoDlg::OnSetContent_D() void CRegDemoDlg::OnDeleteValue_1() void CRegDemoDlg::OnDeleteValue_2() void CRegDemoDlg::OnDeleteValue_3() 四、小结 注册表的操作在实际编程中使用频率极高,在很多地方都要用到,比如,程序员自定义文件的图标就需要操作注册表,所以一个成熟优秀开发人员应掌握Windows灵魂--注册表存取技术,尽可能的利用注册表来发挥操作系统的各种优势。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
62.500ms |