.reg语法
RegistryEditorVersionBlank line[RegistryPath1]"DataItemName1"="DataType1:DataValue1"DataItemName2"="DataType2:DataValue2"Blank line[RegistryPath2]"DataItemName3"="DataType3:DataValue3"
表头:RegistryEditorVersion
“Windows Registry Editor Version 5.00”:对于Windows 2000、Windows XP和Windows Server 2003
“REGEDIT4”:对于Windows 98和Windows NT 4.0,也适用于基于Windows 2000、Windows XP和Windows Server 2003的计算机。
空行:Blank line
它标识新的注册表路径的开始。
每个项或子项都是一个新的注册表路径,如果.reg文件中有多个项,空白行可以帮助您检查内容和排查其中的问题。
RegistryPathx
是保留要导入的第一个值的子项的路径。
用方括号将路径括起来,并用反斜杠将层次结构的各个级别隔开。例如:
[HKEYLOCAL MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]
一个.reg文件可以包含多个注册表路径。如果注册表中不存在路径语句中底层的层次结构,将创建一个新的子项。注册表文件的内容将按照它们的输入顺序发送到注册表。因此,如果要新建一个包含另一子项的子项,必须按正确的顺序输入行。
DataItemNamex
要导入的数据项的名称。如果文件中的数据项在注册表中不存在,.reg文件将添加该数据项及其值。如果数据项存在,.reg文件中的值将覆盖现有的值。数据项的名称用引号引起来。数据项名称后紧跟着一个等号(=)。
DataTypex
注册表值的数据类型,紧跟在等号后面。对于REG_SZ(字符串值)以外的所有数据类型,数据类型后都紧跟一个冒号。如果数据类型是REG_SZ,则不包括数据类型值或冒号。在这种情况下,Regedit.exe假定数据类型为REG_SZ。
数据类型
| 名称 | 数据类型 | 说明 |
|---|---|---|
| 二进制值 | REG_BINARY | 原始二进制数据。大多数硬件组件信息都存储为二进制数据,并且以十六进制格式显示在注册表编辑器中。 |
| DWORD值 | REG_DWORD | 由长为4字节的数值表示(32位整数)。设备驱动程序和服务的许多参数都是此类型,并且以二进制、十六进制或十进制格式显示在注册表编辑器中。相关值DWORD_LITTLE_ENDIAN(最不明显字节是最低地址)REG_DWORD_BIG_ENDIAN(最不重要的字节位于最大地址)。 |
| 可扩展字符串值 | REG_EXPAND_SZ | 可变长度的数据字符串。此数据类型程序或服务使用数据时解析的变量。 |
| 多字符串值 | REG_MULTI_SZ | 多字符串。包含用户可以读取的表单中的列表或多个值的值通常是此类型。条目由空格、逗号或其他标记分隔。 |
| 字符串值 | REG_SZ | 固定长度的文本字符串。 |
| 二进制值 | REG_RESOURCE_LIST | 一系列嵌套数组,用于存储由硬件设备驱动程序或它控制的物理设备之一使用的资源列表。此数据由系统在\ResourceMap树中检测并写入,在注册表编辑器中以十六进制格式显示为二进制值。 |
| 二进制值 | REG_RESOURCE_REQUIREMENTS_LIST | 一系列嵌套数组,旨在存储设备驱动程序或驱动程序控制可使用的物理设备之一的可能硬件资源列表。系统会在\ResourceMap树中写入此列表的子集。此数据由系统检测,在注册表编辑器中以十六进制格式显示为二进制值。 |
| 二进制值 | REG_FULL_RESOURCE_DESCRIPTOR | 一系列嵌套数组,用于存储物理硬件设备使用的资源列表。此数据由系统在\HardwareDescription树中检测并写入,在注册表编辑器中以十六进制格式显示为二进制值。 |
| 无 | REG_NONE | 没有任何特定类型的数据。此数据由系统或应用程序写入注册表,在注册表编辑器中以十六进制格式显示为二进制值 |
| 链接 | REG_LINK | 一个Unicode字符串,用于命名符号链接。 |
| QWORD值 | REG_QWORD | 由64位整数表示的数据。此数据在注册表编辑器中显示为二进制值,在Windows2000中引入。 |
DataValuex紧跟在冒号(对于 REG_SZ,则为等号)后面,并且格式必须正确(例如,字符串或十六进制)。对二进制数据项使用十六进制格式。
注意:可以为同一个注册表路径输入多个数据项行。
添加注册表子项或添加和更改注册表值
要添加注册表子项或添加/更改注册表值,请在注册表中进行相应的更改,然后导出相应的一个或多个子项。导出的注册表子项自动另存为.reg文件。要对注册表进行更改并将更改导出到.reg文件,请按照下列步骤操作:1.单击“开始”,单击“运行”,在“打开”框中键入regedit,然后单击“确定”。
2.找到并单击存放要更改的注册表项的子项。
3.单击“文件”,然后单击“导出”。
此步骤在您进行更改之前备份子项。如果所作更改产生现问题,您可以随后将此文件重新导入注册表。
4.在“文件名”框中,键入用于保存包含原始注册表项的.reg文件的文件名,然后单击“保存”。
注意:请使用能提示其内容的名称,例如,可引用该子项的名称。
5.在右窗格中,添加或修改所需的注册表项。
6.重复第3步和第4步,再次导出该子项,但是对该.reg文件使用不同的文件名。可以使用此.reg文件在其他计算机上对注册表进行更改。
7.在本地计算机上测试所作更改。如果它们产生问题,请双击存放原始注册表数据备份的文件,以将注册表返回到其原始状态。如果更改起到预期作用,则可以使用本文分发注册表更改一节中的方法将您在第6步中创建的.reg文件向其他计算机分发。
删除注册表项和值
要使用.reg文件删除注册表项,请在.reg文件中的注册表路径前放置一个连字符(-)。例如,要从以下注册表项中删除Test子项:HKEY_LOCAL_MACHINE\Software
请在.reg文件中的以下注册表项前放置一个连字符:
HKEY_LOCAL_MACHINE\Software\Test
以下示例就是一个可以执行此任务的.reg文件。
[-HKEY_LOCAL_MACHINE\Software\Test]
要使用.reg文件删除注册表值,请在.reg文件中的数据项名称后的等号后放置一个连字符(-)。例如,要从以下注册表项中删除TestValue注册表值:
HKEY_LOCAL_MACHINE\Software\Test
请在.reg文件中的”TestValue”=后面放置一个连字符。以下示例就是一个可以执行此任务的.reg文件。
HKEY_LOCAL_MACHINE\Software\Test
“TestValue”=-
要创建.reg文件,请使用Regedit.exe导出要删除的注册表项,然后使用记事本编辑.reg文件并插入连字符。
重命名注册表项和值
要重命名项或值,请删除该项或值,然后创建一个具有新名称的新项或新值。
⚠反斜杠⚠
如果需要在注册表中使用文件路径,那么文件路径的斜杠\需要使用双斜杠\。
如果使用系统变量,则需要把系统变量中的斜杠替换成双斜杠。
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell][HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\EditPlus 2]@="EditPlus 2"[HKEY_CLASSES_ROOT\*\shell\EditPlus 2\command]@="C:\\Program Files (x86)\\EditPlus 2\\EditPlus.exe %1"
此例中,如果把路径替换为变量:
@=”%PROGRAMFILES(x86)%\EditPlus 2\EditPlus.exe %1”
实际结果为:
@=”C:\Program Files (x86)\EditPlus 2\EditPlus.exe %1”
❌这样是错误的,系统将无法找到文件❌
可以用DOS批处理来生成改reg文件,这里要使用到文本替换命令把单斜杠替换为双斜杠,如下:
@echo offecho "默认使用86文件夹,兼容32位系统执行"set var=%PROGRAMFILES%if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set "var=%PROGRAMFILES(x86)%"set "var=%var:\=\\%"echo Windows Registry Editor Version 5.00 >menu.regecho. >>menu.regecho [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell] >>menu.regecho. >>menu.regecho [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\EditPlus 2] >>menu.regecho. >>menu.regecho @="EditPlus 2" >>menu.regecho. >>menu.regecho [HKEY_CLASSES_ROOT\*\shell\EditPlus 2\command]>>menu.regecho. >>menu.regecho @="%var%\\EditPlus 2\\EditPlus.exe %%1">>menu.regregedit /s menu.reg
自用的.reg
修改HostName.reg
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]"NV Hostname"="HostName""Hostname"="HostName"[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName][HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName]@="mnmsrvc""ComputerName"="HostName"[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName]"ComputerName"="HostName"[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName]"ActvieComputeName"="HostName""ComputeName"="HostName";[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters]"NV Hostname"="HostName""Hostname"="HostName"[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\ComputerName\ComputerName]"ComputeName"="HostName";[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Tcpip\Parameters]"NV Hostname"="HostName""Hostname"="HostName"[HKEY_CURRENT_USER\Software\Microsoft\Windows Media\WMSDK\General]"ComputerName"="HostName"[HKEY_CURRENT_USER\Volatile Environment]"LOGONSERVER"="\\\\HostName""USERDOMAIN"="HostName"
新增右键菜单栏指定打开方式.reg
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\建瓯最坏];键值名,即右键显示的名字@="建瓯最坏";图标,注意路径的“\”要双写"Icon"="\"C:\\Users\\SuperNova\\Desktop\\JianOuZuiHuai.ico\",0"[HKEY_CLASSES_ROOT\*\shell\建瓯最坏\command];打开的路径@="\"C:\\Program Files\\Notepad++\\notepad++.exe\" \"%1\""
新增前
增加后
检查后发现乱码
路径对了但是JPG图片不行

图标文件改成.ico格式(万能兔(最大128),做好图(最大512),实用工具大全(16、24、32、42、48))
额,好像效果不太好,选个线条简单的估计会好点(和像素无关)
设置某个文件类型的默认打开程序和图标
以“.yar”文件设置“NotePad++.exe”打开为例:
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.yar]@="yarfile"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\yarfile]@=""[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\yarfile\DefaultIcon]@="C:\\Users\\Administrator\\Pictures\\ico.ico"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\yarfile\shell][HKEY_LOCAL_MACHINE\SOFTWARE\Classes\yarfile\shell\open][HKEY_LOCAL_MACHINE\SOFTWARE\Classes\yarfile\shell\open\command]@="D:\\Program Files\\Notepad++\\notepad++.exe \"%1\""
删除某键.reg
Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\*\shell\建瓯最坏]
整个键都被删除:




