dos(cmd)中删除、添加、修改注册表命令
regedit的运⾏参数
REGEDIT [/L:system] [/R:user] filename1
REGEDIT [/L:system] [/R:user] /C filename2
REGEDIT [/L:system] [/R:user] /E filename3 [regpath]
/L:system Specifies the location of the SYSTEM.DAT file.
/R:user Specifies the location of the USER.DAT file.
filename1 Specifies the file(s) to import into the regist
/C filename2 Specifies the file to create the registry from.
/E filename3 Specifies the file to export the registry to.
regpath Specifies the starting registry key to export from.
(Defaults to exporting the entire registry).
/S (Windows) Silent - no message on completion.
从Windows命令⾏快速操作注册表
 每⼀个熟悉Windows的⼈都相信,通过注册表⼏乎可以做到任何事情,真正的问题是怎样迅速到正确的注册键。
  绝⼤多数情形下,操作注册表意味着到某个特定的⼦键;偶尔地,可能需要修改⼀下⼦键的名称(例如,可能要进⾏结构上的改动)。那么,怎样才能迅速到正确的⼦键并执⾏修改?另外,如果你不仅要改动本地机器的注册表,⽽且还要对
远程机器作同样的修改,
该怎么办?本⽂告诉你⼀个好⼯具Regfind。Regfind可以从Windows 2000 Server的Resource Kit Supplement One到,或者从⽹上下载。Regfind适⽤于Windows的各个版本,包括Windows 9x系列。
  Regfind是⼀个命令⾏⼯具。不带任何选项执⾏Regfind,它将显⽰出帮助信息。最简单的⽤法是执⾏查,例如执⾏Regfind "QQ",Regfind将出所有包含字符串“QQ”的注册键,如图⼀所⽰。
  除了单纯的查之外,Regfind还能够执⾏替换:只需在图⼀的命令后加上-r选项和⼀个替换字符串即可。例如,假设你公司的名称从AGroup改成了BGroup,现在你想要对注册表中所有的产品注册信息作相应的改动,只需执⾏:Regfind "AGroup" -r "BGroup"。注意,如果搜索字符串包含空格或标点符号,字符串应该⽤引号包围。
  如果要对⼀台远程机器作相应的改动,只需在前⾯的命令后加上-m选项并指定远程机器的UNC(Universal Naming Convention,通⽤命名协定)路径,例如:Regfind -m\\server03 "AGroup" -r "BGroup"。
  搜索整个注册表⽆疑是⼀件相当耗费时间的事情。为了提⾼效率,你可以将Regfind的搜索操作限制到某个注册表的分⽀或⼦键,只需要在-p选项后⾯指定要搜索的注册表位置即可。例如,假设要把搜索“AGroup”的操作限制在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft⼦键,并把该⼦键下的AGroup替换成BGroup,执⾏:Regfind "AGroup" -r "BGroup" -p "HKEY_LOCAL_MACHINESOFTWARE\Microsoft"。
  通过上⾯的说明可以看出,Regfind是⼀个很⽅便的⼯具,但⽩璧有瑕,有时候你仍会感到它不能满⾜要求。⾸
先,Regfind不⽀持通配符,也不⽀持正则表达式——⽽这两者对于执⾏复杂搜索是⾮常有⽤的。唯⼀⼀个给搜索操作增加灵活性的选项是-y。-y选项使得Regfind的搜索操作对⼤⼩写不敏感,即如果你执⾏Regfind AGroup -y,则Regfind的搜索结果中将包含AGroup、aGroup以及其他字母⼤⼩写的组合(如果没有-y选项,Regfind默认对⼤⼩写敏感,但Regfind的命令选项对⼤⼩写不敏感,例如你可以随意使⽤-R或-r)。
  第⼆,如果⽤Regfind执⾏搜索/替换操作,它将替换所有到的字符串,你不能要求Regfind只替换其中⼀个字符串。勉强可算是补救策略的⽅法是:将搜索操作限制在某个特定的注册表分⽀。因此,我的建议是:⾸先⽤Regfind出所有匹配的注册⼦键,然后⽤Regfind执⾏全局替换或⼿⼯修改某个特定的⼦键。
  第三,如果你想要修改数值型数据,Regfind似乎算不上最佳帮⼿。这是因为,许多要处理的REG_DWORD值不是0就是1,⽽0和1在注册表中出现的机会实在太频繁了,很可能出现误替换的情形。解决问题的唯⼀办法就是尽可能精确地限定Regfind的搜索范围
命令⾏⽅式直接修改注册表
⼀、CMD
cmd是windows2000中的⼀个⼩得如鸽⼦蛋⼀样的程序,是⼀个所谓命令⾏控制台。有两条进⼊该程序的通道:第⼀,⿏标点击"开始->运⾏",在出现的编辑框中键⼊"cmd",然后点击"确定";第⼆,在启动windows2000的时候,按F8进⼊启动选择菜单,移动光条或键⼊数字⾄安全模式的命令⾏状态。出现的窗⼝是⼀个在win9x系统常见的那种msdos⽅式的界⾯
――⼀个⿊乎乎的窗⼝.甚⾄还没有msdos⽅式的窗⼝耐看:连常⽤的⼯具条都没有放上.我真想不通,贵为最新的操作系统,因何还保留似乎是⽯器时代的dos界⾯呢?像往常⼀样,习惯性低在命令后⾯键⼊:cmd/?,想看看会提⽰些什么?
孰料出现的东西使我⼤吃⼀惊:1.这些信息是中⽂的,要知道原来纯dos环境可不会直接⽀持中⽂呀!2.有相当详细的帮助信息.3.界⾯虽然是命令⾏的,但却可以对很多深层次的项⽬进⾏操作,,例如修改注册表等等.后来的使⽤也证明,cmd实际上也能直接调⽤图形界⾯的程序,并在调⽤结束后可以返回到命令⾏界⾯.
尽管微软把这个⼯具当做命令解释器⼀个新的实例,但使⽤的⽅法却和原来的dos没有区别,打开命令⾏窗⼝之后,可以到与dos相同的系统提⽰符号C:/>,命令必须键⼊在这个提⽰符的后⾯,以回车键确认.
完整的语法如下:
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] string]
各个参数的含义:
CMD:是命令名称,这可省略.以下是命令所⽤的参数或开关.
/C 执⾏字符串指定的命令然后终断
/K 执⾏字符串指定的命令但保留
/S 在 /C 或 /K 后修改字符串处理(见下)
/Q 关闭回应
/D 从注册表中停⽤执⾏ AutoRun 命令(见下)
/A 使向内部管道或⽂件命令的输出成为 ANSI
/U 使向内部管道或⽂件命令的输出成为 Unicode
/
T:fg 设置前景/背景颜⾊(详细信息,请见 COLOR /?)
/E:ON 启⽤命令扩展(见下)
/E:OFF 停⽤命令扩展(见下)
/F:ON 启⽤⽂件和⽬录名称完成字符 (见下)
/F:OFF 停⽤⽂件和⽬录名称完成字符(见下)
/V:ON 将 c 作为定界符启动延缓环境变量扩展。如: /V:ON 会
允许 !var! 在执⾏时允许 !var! 扩展变量 var。var 语法
在输⼊时扩展变量,这与在⼀个 FOR 循环内不同。
/V:OFF 停⽤延缓的环境扩展。
请注意,如果字符串有引号,可以接受⽤命令分隔符 '&&' 隔开
的多个命令。并且,由于兼容原因,/X 与 /E:ON 相同,/Y 与
/
E:OFF 相同,并且 /R 与 /C 相同。忽略任何其它命令选项。
如果指定了 /C 或 /K,命令选项后的命令⾏其余部分将作为命令⾏处理;在这种情况下,会使⽤下列逻辑处理引号字符("): 1. 如果符合下列所有条件,那么在命令⾏上的引号字符将被
保留:
进入注册表
- 不带 /S 命令选项
- 整整两个引号字符
- 在两个引号字符之间没有特殊字符,特殊字符为下列中的
⼀个: <>()@^|
- 在两个引号字符之间有⾄少⼀个空⽩字符
- 在两个引号字符之间有⾄少⼀个可执⾏⽂件的名称。
2. 否则,⽼办法是,看第⼀个字符是否是⼀个引号字符,如果是,舍去开头的字符并删除命令⾏上的最后⼀个引号字符,保留最后⼀个引号字符之后的⽂字。如果 /D 未在命令⾏上被指定,当 CMD.EXE 开
始时,它会寻以下
REG_SZ/REG_EXPAND_SZ 注册表变量。如果其中⼀个或两个都存在,这两个变量会先被执⾏。
HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorAutoRun
和/或
HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorAutoRun
命令扩展是按默认值启⽤的。您也可以使⽤ /E:OFF,为某⼀特定调⽤⽽停⽤扩展。您可以在机器上和/或⽤户登录会话上启⽤或停⽤ CMD.EXE 所有调⽤的扩展,这要通过设置使⽤REGEDT32.EXE 的注册表中的⼀个或两个 REG_DWORD 值: HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorEnableExtensions
和/或
HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorEnableExtensions
到 0x1 或 0x0。⽤户特定设置⽐机器设置有优先权。命令⾏命令选项⽐注册表设置有优先权。
原来的dos中有所谓的内部命令和外部命令,在cmd中,引⼊了命令⾏扩展,你可以在cmd窗⼝中直接执⾏下⾯的扩展部分,扩展部分之前不必加cmd.
命令⾏扩展包括对下列命令所做的更改和/或添加:
DEL 或 ERASE
COLOR
CD 或 CHDIR
MD 或 MKDIR
PROMPT
PUSHD
POPD
SET
SETLOCAL
ENDLOCAL
IF
FOR
CALL
SHIFT
GOTO
START (同时包括对外部命令调⽤所做的更改)
ASSOC
FTYPE
有关详细信息,请键⼊ HELP 命令名。
⼆、REG
可以 WindowsXP提供的reg命令⾏就可以做到。
Reg添加、更改和显⽰注册表项中的注册表⼦项信息和值。
若要查看该命令语法,请单击以下命令:
reg add
将新的⼦项或项添加到注册表中。
语法
reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f]
参数
KeyName
指定⼦项的完全路径。对于远程计算机,请在中的⼦项路径前包含计算机名称。忽略 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 会导致默认对本地计算机进⾏操作。以相应的⼦⽬录树开始路径。有效⼦⽬录树为 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 会导致默认对本地计算机进⾏操作。以相应的⼦⽬录树开始路径。有效⼦⽬录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,则只可使⽤ HKLM 和 HKU ⼦⽬录树。
KeyName2
指定⼦项⽬的地的完整路径。对于远程计算机,请在中的⼦项路径前包含计算机名称。忽略 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 会导致默认对本地计算机进⾏操作。以相应的⼦⽬录树开始路径。有效⼦⽬录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。
/v EntryName
删除⼦项下的特定项。如果未指定项,则将删除⼦项下的所有项和⼦项。
/ve
指定只可以删除为空值的项。
/va
删除指定⼦项下的所有项。使⽤本参数不能删除指定⼦项下的⼦项。
/f
⽆需请求确认⽽删除现有的注册表⼦项或项。
/?
在命令提⽰符显⽰帮助。
注释
下表列出了 reg delete 操作的返回值。值说明
0 成功
1 失败
范例
下⾯的范例说明了如何使⽤ reg delete 命令:
reg delete "hkcu\software\microsoft\winmine" /v Name1