2024年5月6日发(作者:)

windows .reg 文件格式详解

*.reg 文件格式实质是一个 ini 文件。就按照 ini 来读取就可以了。

这里不再讲述 ini 的格式了。

reg头:reg文件第一行必须是 reg 头。其实就是一行版本的描述文字。

Windows 95/98/ME/NT 4.0是“REGEDIT4”。

Windows 2000/XP/Vista是“Windows Registry Editor Version 5.00"。

换行符:

rn

n(空行)

[键值路径](例如HKEY_CLASSES_ROOTabc,整个路径上得键如果没有都会帮你创建)

@=“”(@代表默认值右边用双引号代表reg_sz类型,如果右边值有“”,必须用""转译)

1、删除项值

[HKEY_CLASSES_ROOTabc]

“a”=-

2、删除键值

[-HKEY_CLASSES_ROOTabc]

注册表里面的常用的键值:

类型

字符串

注册表表示

REG_SZ

在 ini 中的表示方法

"stringname"="abcdefg…"

若包含 会存成

包含 ” 会存成 ”

二进制数组 REG_BINARY "bin1"=hex:11,22,33,44,55,66,

66,55,44,33,22,11

可出现 作为连行符。

最大2k。

32位数值 REG_DWORD “v1”=dword:1a2b3c4d

代表实际数值为:0x1a2b3c4d

“v1”=hex(4):1a,2b,3c,4d

则代表实际数值为:0x4d3c2b1a

注意字节序

64位数值

多行文本

REG_QWORD ??

REG_MULTI_SZ

“v1”=hex(b):01,02,03,04,05,06,07,08

“text1”=hex(7):31,00,31,00,00,00,

32,00,32,00,00,00,

33,00,33,00,00,00

代表共3行, unicode编码:

11

22

33

扩展文本 REG_EXPAND_SZ 也是unicode编码:

“text2”=hex(2):61,00,73,00,64,00,66,00,00,00

跟字符串有什么区别?

其实任何一个数值都可以由二进制数值来表示:

类型

0 未定义的类型

1 单行文本

2 扩展字符串

3 二进制

4 32位数值,小端

5 32位数值,大端

6 链接

7 多行文本

8 注册表资源列表

9 完整资源描述

a 资源需求描述

b 64位数值

c,d,e,f 此4种暂未定义

注册表数据类型

0 reg_none

1 reg_sz

2 reg_expand_sz

3 reg_binary

4reg_dword, reg_dword_little_endian

5 reg_dword_big_endian

6 reg_link

7 reg_multi_sz

8 reg_resource_list

9 reg_full_resource_descriptor

a reg_resource_requirements_list

b reg_qword

在 ini 中的表示方法

hex(0):

hex(1): 或加双引号对“…”

hex(2):

hex(3): 或 hex:

hex(4): 或 dword:

hex(5):

hex(6):

hex(7):

hex(8):

hex(9):

hex(a):

hex(b):