Hive Inf 的注册表条目结构的相关知识2006/03/4, 周六 @ 10:51 pm ・ 归类于: 系统定制, 视窗内外
Hive 本是配置单元的意思, 但这里的 Hive 指的是 Windows 安装文件中的一些 Inf 文件, 主要是:
hivedef.inf (创建 HKU.DEFAULT 下的设置, 也就是默认的用户配置)
hivesys.inf (创建 HKLMSYSTEM 下的设置)
hivesft.inf (创建 HKLMSOFTWARE 下的设置)
hivecls.inf (创建 HKLMSOFTWAREClasses 下的设置, 也就是 HKCR)
hiveusd.inf
(其实这只是为了整理方便, 才人为地分成了几个文件, 同一个注册表条目放在哪个文件中都没问题的.)
示例:
HKCU,"Control PanelDeskt","Wall*****",0×00000000,"%NONE%"
根项, [子项], [名称], [类型], [数据]
根项可用以下 4 种缩写: HKCR, HKCU, HKLM, or HKU.
[子项] 可选. 如果没有子项, 所有操作都将作用于根项.
[名称] 可选.
如果不指定 [名称] 和 [类型], 但指定 [数据] 参数, 那么操作将作用于指定项的默认值. 如果 [名
称], [标志], [数据] 都不指定, 那么你将添加一个 [子项].
[类型]:
REG_SZ = 0×00000000
REG_BINARY = 0×00000001
REG_SZ_NOCLOBBER = 0×00000002
REG_BINARY_NOCLOBBER = 0×00000003
REG_MULTI_SZ_APPEND = 0×0001000A
REG_MULTI_SZ = 0×00010000
REG_DWORD = 0×00010001
REG_MULTI_SZ_NOCLOBBER = 0×00010002
REG_DWORD_NOCLOBBER = 0×00010003
REG_MULTI_SZ_DELVAL = 0×00010006
REG_ADDREG_APPEND = 0×00010008
REG_EXPAND_SZ = 0×00020000
REG_NONE = 0×00020001
REG_EXPAND_SZ_NOCLOBBER = 0×00020002
下面就是需要大家注意的地方了, 就是 [名称] 类型的低 4 位所代表的意思.
0×00000004 表示删除注册表中的 [子项], 或是删除 [子项] 下的 [名称].
0×00000010 用于创建 [子项], 会忽略指定的 [名称] 和 [数据].
0×00000020 用于设置 [名称], 但是只有目标 [名称] 已经存在时, 才能起效果.
0×00001000 用于设置 64 位注册表.
0×00004000 用于设置 32 位注册表.
[数据]:
就是要写入 [名称] 的数据. 如果指定的 [名称] 不存在, 那么 Setup API 就会新建一个; 如果 [名称]
已经存在了, 那么 API 将会覆盖已有 [名称]; 如果 [名称] 为 REG_MULTI_SZ 并且 [类型] 设成了
0×00010008, 那么 API 会将指定 [数据] 附加到已经存在的字符串列表中. 如果你不指定 [数据], 那么
Setup API 将会创建 [名称] 而不设置 [数据].