本系列想以windows sdk提供的头文件进行分章节记录学习.
本章介绍注册表相关操作winreg.h.将以windows注册表体系化进行介绍。
在windows函数中函数名称A结尾代表是ASCII字符串相关函数,对应字符串变量类型为char*;以W结尾代表是Unicode字符串相关函数,对应字符串变量类型为wchar*。
提醒:备份或恢复系统状态(包括系统文件和注册表配置单元)的应用程序应使用卷影复制服务而不是注册表功能
首先打开注册表,看一下注册表结构:
使用win+r键输入regedit打开注册表
注册表
再打开左列某个节点:
注册表
可以看到左列树状图是注册表项,名称是注册表值,数据是注册表数据。其中值和数据成对出现,值数据对是键的子项。
对程序来说没有限制就是一场灾难,同样注册表也存在限制。
注册表限制
为了使windows64系统兼容运行win32程序,windows在注册表中单独划分一块区域供32位程序使用,32位程序对注册表的操作默认在这块区域进行。
注册表虚拟化
注册表既然能虚拟化,那必定也能控制。windows操作系统中提供了这样一种控制方式:
注册表虚拟化控制
windows中用HKey代表注册表中的键,在windows中默认定义了一些主要键。
预定义键
以上是对windows注册表整个环境相关介绍,接下来介绍具体的操作函数。
windows注册表创建函数
打开注册表键
获取注册表键后便可以对注册表值数据进行设置。
设置注册表键的值和数据
获取值数据对
枚举注册表键或者值数据对
注意删除键如果有子项会删除失败。一种方案是枚举子项删除,一种是使用RegDeleteTree。
删除键或者值数据对
键树操作
注册表键重命名
查询注册表
在windows系统中可以向对文件创建链接一样对注册表键取别名,对别名操作相当于对注册表键操作。
重定向控制
键安全属性
注册表恢复
注册表文件替换注册表中的键
注册表保存为文件
关闭注册表并不会将修改立马保存进系统中,而是会等待部分时间。
这种函数一般都是远程使用。