字串值(REG_SZ):纯文本数据,原样明文存储,如"这是一个字串值"
二进制值(REG_BINARY):hex:开头,原样明文存储,如hex:11,12,13,14,19,1a,1b,1c,1d,1e,1f,regedit中以空格分隔
双字节值(REG_DWORD):dword:开头,8位十六进制数,原样明文存储,如dword:00000100,regedit中显示为0x开头的十六进制数和对应的十进制数,如0x00000100(256)。最大值:232-1=4294967295
四字节值(REG_QWORD):regedit中的表现形式与REG_DWORD相同,但最大值扩展到了64位(16位十六进制数),即264-1=18446744073709551615。初始化时默认仍是32位的0,即0x00000000,设置数值时不超过32位的数字仍显示为32位(同REG_DWORD的8位十六进制数),超过32位的数字以实际长度显示。在reg文件中以hex(b):开头,数值从低字节到高字节逆序排列,注意补足8个字节。如在reg文件中设置某键值为四字节值,数据为十进制23869,先把23869转换成十六进制得5d3d,然后在reg文件中把数据写成hex(b):3d,5d,00,00,00,00,00,00
多字串值(REG_MULTI_SZ):可保存多行字符串,在reg文件中以hex(7):开头
可扩展字串值(REG_EXPAND_SZ):在regedit中表现形式同REG_SZ,在reg文件中以hex(2):开头
与REG_SZ的不同是REG_EXPAND_SZ数据中可以包含环境变量,在读取数据时会自动把环境变量名替换成变量值,如果用REG_SZ存储带环境变量的字符串,则环境变量不会自动替换。比如系统中有一个环境变量test,值为34567:
REG_SZ类型的文本%test%_a%test%,解析得到的是%test%_a%test%
REG_EXPAND_SZ类型的文本%test%_a%test%,解析得到的是34567_a34567
重点:最后这两种数据类型在reg文件中要改用ASCII码(十六进制)表示,每个字符占2字节,从低字节到高字节逆序排列。在多字串值中遇到换行时,每一行末尾加一个结束符00,00(即'\0')
如多字串值数据
123
456
789
在reg文件中表示为:
hex(7):31,00,32,00,33,00,00,00,\
34,00,35,00,36,00,00,00,\
37,00,38,00,39,00,00,00,\
00,00,00,00
可扩展字串值数据123456789在reg文件中表示为:
hex(2):31,00,32,00,33,00,34,00,35,00,36,00,37,00,38,00,39,00,00,00
注意末尾的4个00(可扩展字串值为2个00)并不是必须的,但导出注册表键时,会自动加上这些结束符