在CMD命令行下修改Windows注册表方法

在CMD命令行下修改Windows注册表方法及Hiv技术

注册表regedit的未公开的参数的 可以在cmd下使用.

regedit的运行参数

REGEDIT [/L:system] [/R:user] filename1

REGEDIT[/L:system][/R:user]/Cfilename2

REGEDIT[/L:system][/R:user]/Efilename3[regpath]

/L:systemSpecifiesthelocationoftheSYSTEM.DATfile.

/R:userSpecifiesthelocationoftheUSER.DATfile.

filename1Specifiesthefile(s)toimportintotheregist

/Cfilename2Specifiesthefiletocreatetheregistryfrom.

/Efilename3Specifiesthefiletoexporttheregistryto.

regpathSpecifiesthestartingregistrykeytoexportfrom.

(Defaultstoexportingtheentireregistry).

/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_MACHINESoftwareMicrosoftCommandProcessorAutoRun

和/或

HKEY_CURRENT_USERSoftwareMicrosoftCommandProcessorAutoRun

命令扩展是按默认值启用的。您也可以使用/E:OFF,为某一特定调用而停用扩展。您可以在机器上和/或用户登录会话上启用或停用CMD.EXE所有调用的扩展,这要通过设置使用REGEDT32.EXE的注册表中的一个或两个REG_DWORD值:

HKEY_LOCAL_MACHINESoftwareMicrosoftCommandProcessorEnableExtensions

和/或

HKEY_CURRENT_USERSoftwareMicrosoftCommandProcessorEnableExtensions

到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\PathToSubkey中的子项路径前包含计算机名称。忽略ComputerName会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为HKLM、HKCU、HKCR、HKU以及HKCC。

/vEntryName

指定要添加到指定子项下的项名称。

/ve

指定添加到注册表中的项为空值。

/tDataType

指定项值的数据类型。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指定为数据类型且需要列出多个项时,请使用该参数。如果没有指定,将使用默认分隔符为\。

/dvalue

指定新注册表项的值。

/f

不用询问信息而直接添加子项或项。

/?

在命令提示符显示帮助。

注释

该操作不能添加子树。该版本的Reg在添加子项时无需请求确认。

下表列出了regadd操作的返回值。值说明

0成功

1 失败

范例下列范例说明了如何使用 reg add 命令:

reg add \hklm\software\myco /v data /t reg_binary /d fe340ead

regadd"hkcu\software\microsoft\winmine"/vName3/treg_sz/dAnonymous

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子目录树。

/vEntryName

比较子项下的特定项。

/ve

指定只可以比较没有值的项。

{[/oa]|[/od]|[/os]|[on]}

指定不同点和匹配点的显示方式。默认设置是/od。值说明

/oa指定显示所有不同点和匹配点。默认情况下,仅列出不同点。

/od指定仅显示不同点。这是默认操作。

/os指定仅显示匹配点。默认情况下,仅列出不同点。

/on 指定不显示任何内容。默认情况下,仅列出不同点。

/s Separator

比较所有子项和项。

/?

在命令提示符显示帮助。

注释

下表列出了regcompare操作的返回值。值说明

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在复制子项时无须请求确认。

下表列出了regcopy操作的返回值。值说明

0成功

1 失败

范例下列范例说明了如何使用 reg copy 命令:

reg copy "hkcu\software\microsoft\winmine" "hkcu\software\microsoft\winminebk" /s /freg 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。

/vEntryName

删除子项下的特定项。如果未指定项,则将删除子项下的所有项和子项。

/ve

指定只可以删除为空值的项。

/va

删除指定子项下的所有项。使用本参数不能删除指定子项下的子项。

/f

无需请求确认而删除现有的注册表子项或项。

/?

在命令提示符显示帮助。

注释

下表列出了regdelete操作的返回值。值说明

0成功

1 失败

范例下面的范例说明了如何使用 reg delete 命令:

reg delete "hkcu\software\microsoft\winmine" /v Name1

regdelete"hkcu\software\microsoft\winmine"/vTime1

reg delete "hkcu\software\microsoft\winmine" /va

reg export

将指定子项、项和值的副本创建到文件中,以便将其传输到其它服务器。

语法reg export KeyName FileName

参数

KeyName

指定子项的完全路径。Export操作仅可在本地计算机上工作。以相应的子目录树开始路径。有效子目录树为HKLM、HKCU、HKCR、HKU以及HKCC。

FileName

指定要导出文件的名称和路径。该文件必须具有.reg扩展名。

/?

在命令提示符显示帮助。

注释

下表列出了regexport操作的返回值。值说明

0成功

1 失败

范例下面的范例说明了如何使用 reg export 命令:

reg export "hkcu\software\microsoft\winmine" c:\data\regbackups\wmbkup.reg

reg import

将包含导出的注册表子项、项和值的文件复制到本地计算机的注册表中。

语法reg import FileName

参数

FileName

指定将复制到本地计算机注册表中的文件的名称和路径。必须预先使用regexport命令创建该文件。

/?

在命令提示符显示帮助。

注释

下表列出了regimport操作的返回值。值说明

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扩展名的regsave操作创建该文件。

/?

在命令提示符显示帮助。

注释

下表列出了regload操作的返回值。值说明

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子目录树。

/vEntryName

返回特定的项及其值。该参数只返回直接位于指定子项的下一层中的项。将会找不到当前子项下的子项中的项。如果省略EntryName,则将返回子项下的所有项。

/ve

指定仅返回为空值的项。

/s

将返回各个层中的所有子项和项。如果不使用该参数,将只返回下一层的子项和项。

/?

在命令提示符显示帮助。

注释

下表列出了regquery操作的返回值。值说明

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扩展名的regsave操作预先创建该文件。

/?

在命令提示符显示帮助。

注释

该操作用于覆盖已编辑的注册表项。编辑注册表项之前,请使用regsave操作保存父亲子项。如果编辑失败,则可以使用本操作恢复子项。

下表列出了regrestore操作的返回值。值说明

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

指定所创建的文件的名称和路径。如果未指定路径,则使用当前路径。

/?

在命令提示符显示帮助。

注释

下表列出了regsave操作的返回值。值说明

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。

/?

在命令提示符显示帮助。

注释

下表列出了regunload操作的返回值。值说明

0成功

1 失败

范例下面的范例说明了如何使用 reg unload 命令:

reg unload "hkcu\software\microsoft\winminebk2"

小心

编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。 小心

只有在别无选择的情况下,才直接编辑注册表。注册表编辑器会忽略标准的安全措施,从而使得这些设置会降低性能、破坏系统,甚至要求用户重新安装 Windows。可以利用“控制面板”或“Microsoft 管理控制台 (MMC)”中的程序安全更改多数注册表设置。如果必须直接编辑注册表,则请首先将其备份。详细信息,请参阅“注册表编辑器帮助”。

注释

使用Reg直接编辑本地或远程计算机的注册表。这些更改有可能造成计算机无法操作并需要重新安装操作系统。所以不要直接编辑注册表,而应尽可能利用“控制面板”或“Microsoft管理控制台(MMC)”更改注册表。

有些操作可以查看或配置本地或远程计算机的注册表项,而另外一些则只允许配置本地计算机的注册表设置。同时,远程访问注册表也可能会限制用于某操作的参数。请检查每个操作的语法以便验证该操作可以用于远程计算机,以及验证可用于那种情况下的参数。

让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”,再按下“确定”按钮即可

相关推荐