CMD之注册表编辑

注册表编辑

注册表根键(Root Key):

是指在注册表编辑器左侧以“HKEY”作为名称前缀的位置,因其位于注册表最项层被称为根键,如Windows XP的注册表中包括五大根键,分别为
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG
这些根键都可缩写,分别是HKCR、HKCU、HKLM、HKU、HKCC。“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows”可以简写成“HKLM\Software\Microsoft\Windows”

注册表编辑关键字

有以下十一个:
1、REG ADD 将新的子项或项添加到注册表中
2、REG COMPARE 比较指定的注册表子项或项
3、REG COPY 复制注册表项到本地或远程计算机的指定位置
4、REG DELETE 删除注册表项或子项
5、REG EXPORT 导出本地计算机注册表项、子项和值
6、REG IMPORT
7、REG LOAD
8、REG QUERY
9、REG RESTORE
10、REG SAVE
11、REG UNLOAD

REG ADD

将新的子项或项添加到注册表中
如果添加的项的路径和项名全都相同,那么就会更改项的数据类型和数据为指定的数据类型和数据。利用这个就可以修改原来注册表项的数据类型和键值了。
语法:
REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]
keyname
指定要添加的子项或项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\格式表示),并将其作为keyname的一部分。省略\\Computername\则默认为对本地计算机的操作。keyname必须包括一个有效的根键。有效根键包括:[ HKLM | HKCU | HKCR | HKU | HKCC ]。如果指定了远程计算机,则有效根键是HKLM和HKU。
注意:如果路径中含有空格,整条路径都要用双引号括起来,否则计算机无法识别项。
有一个细微的细节,就是双引号和路径之间不允许有空格!
例如:
"HKEY_LOCAL_MACHINE\Software\Google\No Toolbar Offer Until"
因为“No Toolbar Offer Until”含有空格,所以整条路径都必须用双引号括起来,而且双引号和路径之间没有空格。
/v ValueName
指定要添加到指定子项下的注册表项名称。
注意:这个和keyname一样,假如项名含有空格,也必须用双引号括起来。同样,双引号和项名之间不允许有空格。
例如:
"PPStream Inc."
/ve
指定添加到注册表中的注册表项为空值,建立的名称为“(默认)”。/ve后面就不可以添加名称了。例如:/ve nat 这样写是不允许的。
如果后面没有指定类型和数据值,那么默认为“REG_SZ”和“空值”。当然,我们用了/ve后,仍然可以指定数据类型和数据值。
例如:
reg add "HKLM\Software\Google\No Toolbar Offer Until" /ve /t REG_DWORD /d 0 /f
/t Type
指定注册表项的数据类型。Type 必须是以下几种类型之一:
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
没有用/t指明数据类型,那么默认的数据类型为REG_SZ 。
/s Separator
当指定了REG_MULTI_SZ 数据类型并且需要列出多个项时,指定用来分隔数据的多个实例的字符。如果没有指定,将使用默认分隔符“\0”。
/d Data
指定新注册表项的键值数据。
默认情况下输入的数据是十进制,0x123这种形式为十六进制。假如没有/d项给定数据,那么该项默认数据为空。
例如:
/d 24 没有前缀,数据位十进制中的24,等于十六进制中的18。
/d 0x16 有十六进制前缀,数据为十六进制中的16,等于十进制中的22。
/d 7b 这个没有指定数据类型,不可以这样写,程序运行错误。尽管我们可以知道它是十六进制,等于十进制的123,但没有前缀,计算机无法识别。
/f
表示不用提示就强行改写现有注册表项。没有/f,程序会提示输入Y/N确认操作。
程序例子:
下面的代码操作,使得有隐藏属性的文件彻底被隐藏。隐藏后,我们无法通过“工具-->文件夹选项-->查看-->显示所有的文件和文件夹”来显示隐藏文件:
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue /t REG_DWORD /d 0 /f
因为路径和项名都没不含有空格,所以可以不用添加任何双引号。如果想添加,也是可以的:
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v CheckedValue /t REG_DWORD /d 0 /f
注释:
reg add 添加注册表项的关键字,照写就是
"HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL"这一条是路径
/v CheckedValue 这个/v后紧跟着要添加的注册表项名称
/t REG_DWORD 这个/t后紧跟着RegKey 数据类型
/d 0 这个/d后就是键值
/f 表示不用提示就强行改写现有注册表项
再看一个例子:
reg add "HKLM\Software\Google\No Toolbar Offer Until" /v "PPStream Inc." /t REG_DWORD /d 0x1335045
这里路径和项都含有空格,所以各个必须用双引号引起来。/d后面的数据有0x前缀,表示该数据为十六进制数据。不含/f开关,那么程序会提示我们输入Y/N确认操作。
下面是帮助信息里的例子:
REG ADD \\ABC\HKLM\Software\MyCo
添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo
REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)
REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
添加一个值(名称: MRU,类型: REG_MUTLI_SZ,数据: fax\0mail\0\0)
REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%
添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%)
注意: 在扩充字符串中使用双百分比符号( %% )
这里,%systemroot%不是我们批处理的变量%var%,不要以为计算机会用什么数据代替,注册表里的数据就是“%systemroot%”。
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG COMPARE

比较指定的注册表子项或项
语法
REG COMPARE KeyName1 KeyName2 [/v ValueName | /ve] [/oa | /od | /os | on] [/s]
参数
KeyName1
指定要比较的第一个子项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM 和 HKU。
KeyName2
指定要比较的第二个子项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。只在KeyName2 中指定计算机名会导致该操作使用到KeyName1 中指定的子项的路径。KeyName 必须包括一个有效的根键。有效根键包括HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM和HKU。
注意:keyname中含有空格,整个keyname都要用双引号引起来,并且双引号与keyname之间不可以存在空格。
/v ValueName
指定要比较的子项下的值名称。如果名称含有空格,要用双引号引起来,并且双引号与名之间不可以存在空格。
/ve
比较空白值<no name>名称的值。
[/oa | /od | /os | on]
指定如何显示比较操作的结果。默认设置是 /od,每个选项注释如下:
/oa
显示所有不同和匹配结果。
/od
只显示不同的结果。这是默认操作。
/os
只显示匹配结果。
/on
不显示结果。
/s
比较所有子项和值。
返回代码:
0 比较成功且结果相同。
1 比较失败。
2 比较成功并找到不同点。
下表列出了结果中显示的符号。
=
KeyName1 数据等于KeyName2 数据
<
KeyName1 数据小于KeyName2 数据
>
KeyName1 数据大于KeyName2 数据
程序例子:

@echo off
mode con cols=160 lines=20
reg compare "HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer" "HKLM\SOFTWARE\Adobe\Acrobat Elements\8.0\Installer"
pause

上面两个路径都含有空格,所以都要用双引号引起来。代码运行结果如下:
< Value: HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer InstallDate REG_SZ 2013-7-27
> Value: HKLM\SOFTWARE\Adobe\Acrobat Elements\8.0\Installer InstallDate REG_SZ
< Value: HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer InstallTime REG_SZ 08:59:25
> Value: HKLM\SOFTWARE\Adobe\Acrobat Elements\8.0\Installer InstallTime REG_SZ
< Value: HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer ReinstallMode REG_SZ omus
< Value: HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer CHS_GUID REG_SZ {AC76BA86-2052-0000-7760-000000000003}
Result Compared: Different
操作成功结束
请按任意键继续. . .
程序例子二:

@echo off
mode con cols=160 lines=20
reg compare "HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer" "HKLM\SOFTWARE\Adobe\Acrobat Elements\8.0\Installer" /v Installdate
pause

运行结果如下:
< Value: HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer Installdate REG_SZ 2013-7-27
> Value: HKLM\SOFTWARE\Adobe\Acrobat Elements\8.0\Installer Installdate REG_SZ
Result Compared: Different
操作成功结束
请按任意键继续. . .
程序例子三:

@echo off
mode con cols=160 lines=20
reg compare "HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer" "HKLM\SOFTWARE\Adobe\Acrobat Elements\8.0\Installer" /oa
pause

运行结果:
= Value: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer ENU_GUID REG_SZ {AC76BA86-2052-0000-7760-000000000003}
< Value: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer InstallDate REG_SZ 2013-7-27
> Value: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Elements\8.0\Installer InstallDate REG_SZ
< Value: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer InstallTime REG_SZ 08:59:25
> Value: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Elements\8.0\Installer InstallTime REG_SZ
< Value: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer ReinstallMode REG_SZ omus
< Value: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Distiller\8.0\Installer CHS_GUID REG_SZ{AC76BA86-2052-0000-7760-000000000003}
Result Compared: Different
操作成功结束
请按任意键继续. . .

下面是帮助信息上的例子(不同的计算机,也许没有这些注册项)
要将MyApp 项下的所有值与 SaveMyApp 项下的所有值进行比较,请键入:
REG COMPARE HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp
要比较MyCo 项下的 Version 的值和 MyCo1 项下的Version 的值,请键入:
REG COMPARE HKLM\Software\MyCo HKLM\Software\MyCo1 /v Version
要将计算机 ZODIAC 上 HKLM\Software\MyCo 下的所有子项和值与当前计算机上HKLM\Software\MyCo 下的所有子项和值进行比较,请键入:REG COMPARE \\ZODIAC\HKLM\Software\MyCo \\。/s
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG COPY

将一个注册表项复制到本地或远程计算机的指定位置。
语法:
REG COPY KeyName1 KeyName2 [/s] [/f]
将KyeName1复制到KeyName2
参数
KeyName1
指定要复制子项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略
\\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括HKLM、HKCU、HKCR、HKU 以及 HKCC。
如果指定了远程计算机,则有效根键是HKLM 和 HKU。
KeyName2
指定子项目的地的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略\\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM 和 HKU。
/s 复制所有子项和值
/f 不用提示就强行复制(我实际操作的结果是无论有无/f,计算机都没有出现对话框,直接就复制过去了)
程序例子:

@echo off
reg copy "HKLM\SOFTWARE\Adobe\Acrobat Distiller\8.0" "HKLM\SOFTWARE\abc" /s
pause

帮助信息的例子:
REG COPY HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp /s
将注册表项 MyApp 下的所有子项和值复制到注册表项 SaveMyApp
REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM\Software\MyCo1
将ZODIAC 上注册表项 MyCo 下的所有值复制到当前机器上的注册表项MyCo1
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG DELETE

删除注册表项或子项。
语法:
REG DELETE KeyName [/v ValueName | /ve | /va] [/f]
参数
KeyName
指定要删除的子项或项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及HKCC。如果指定了远程计算机,则有效根键是HKLM 和 HKU。
/v ValueName
删除子项下的特定项。如果未指定项,则将删除子项下的所有项和子项。
/ve
指定只可以删除为空值的项。
/va
删除指定子项下的所有项。使用本参数不能删除指定子项下的子项。
/f
无需请求确认而删除现有的注册表子项或项。
下表列出了 reg delete 操作的返回值。
0 成功
1 失败
程序例子:
reg delete "HKLM\SOFTWARE\abc" /f
运行上面代码,会将abc项及其所有子项不经确认就直接删除。
reg delete "HKLM\SOFTWARE\abc\Language" /v UI /f
运行上面代码,会将Language项中键名为UI的键删除。
下面是帮助信息里的例子:
REG DELETE HKLM\Software\MyCo\MyApp\Timeout
删除注册表项 Timeout 以及其所有子项和值
REG DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU
删除计算机 ZODIAC 上 HKLM\Software\MyCo 下的注册表值MTU
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG EXPORT

导出本地计算机注册表项、子项和值。
语法
REG EXPORT KeyName FileName
参数
KeyName
指定项的完全路径。Export 操作仅可在本地计算机上工作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。
FileName
指定在操作期间创建的文件的名称和路径。该文件必须具有.reg 扩展名。
程序例子:
reg export "HKLM\SOFTWARE\abc" "D:\123.reg"
运行上面代码,会将HKLM\SOFTWARE\abc项及其子项全部导出到D盘123.reg文件中。如果我们接下来不小心将“HKLM\SOFTWARE\abc”删除了,不要紧,双击123.reg,就又恢复“HKLM\SOFTWARE\abc”及其子项的所有内容了。“123”是导出的reg文件名字,我们将其恢复到注册表里,项的名字肯定不会是“123”。
帮助信息的例子:
REG EXPORT HKLM\Software\MyCo\MyApp AppBkUp.reg
将注册表项 MyApp 的所有子项和值导出到文件 AppBkUp.reg
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG IMPORT

将包含已导出的注册表子项、项和值的文件的内容复制到本地计算机的注册表中。和REG EXPORT是互逆操作。
语法
REG IMPORT FileName
参数
FileName (只适用于本地计算机)
指定其内容将复制到本地计算机注册表中的文件的名称和路径。此文件可以使用reg export创建或者自己手动预先创建。
下表列出了reg import 操作的返回值。
0 成功
1 失败
例如:
reg import "D:\123.reg"
运行上面代码和双击123.reg文件的效果一样,都是将123.reg导入到注册表里,区别只是一个是批处理操作,另一个是手工操作。
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG LOAD

将保存的子项和项写回到注册表的不同子项中。与用于进行疑难解答或编辑注册表项的临时文件一起使用。
语法
REG LOAD KeyName FileName
参数
KeyName
指定要加载的子项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略\\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM 和 HKU。
FileName
指定要加载的文件的名称和路径。必须使用REG SAVE 来预先创建这个文件,扩展名为.hiv 。
/?
在命令提示符处显示reg load 的帮助。
注释
? 下表列出了reg load 操作的返回值。值 描述
0 成功
1 失败
示例
要,请键入:
REG LOAD HKLM\TempHive TempHive.hiv
将名为 TempHive.hiv 的文件加载到 HKLM\TempHive 项
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG QUERY

返回位于注册表中指定的子项下的下一层子项和项的列表。
语法
REG QUERY KeyName [/v ValueName | /ve] [/s]
这个类似于DOS下对文件夹进行dir操作,也就是查找下一级目录。
利用这个命令,我们可以获得注册表项、子项以及键值。
参数
KeyName
指定子项的完全路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略\\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM 和 HKU。
/v ValueName
指定要查询的注册表值名称。如果省略,则返回KeyName 的所有值名称。
/ve
查询默认值或空白值名称<no name>
/s
查询所有子项和值。
reg query 操作的返回值。
0 成功
1 失败
程序例子

@echo off
reg Query HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue
pause

运行结果显示:
! REG.EXE VERSION 3.0
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL
CheckedValue REG_DWORD 0x1
请按任意键继续. . .
下面是帮助信息里的例子:
要显示HKLM\Software\Microsoft\ResKit 项中的名称值 Version 的值,请键入:
REG QUERY HKLM\Software\Microsoft\ResKit /v Version
要显示远程计算机ABC 上的 HKLM\Software\Microsoft\ResKit\Nt\Setup 项下的所有子项和值,请键入:
REG QUERY \\ABC\HKLM\Software\Microsoft\ResKit\Nt\Setup /s
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG RESTORE

将保存的子项和项写回到注册表。
语法
REG RESTORE KeyName FileName
用途:编辑任何注册表项之前,请使用 reg save 操作保存父子项。如果编辑失败,则可以使用reg restore 操作还原原来的子项。
参数
KeyName
指定要还原的子项的完整路径。Restore 操作仅在本地计算机上工作。KeyName 必须包括一个有效的根键。有效根键包括HKLM、
HKCU、HKCR、HKU 以及 HKCC。
FileName
指定其内容将写回到注册表中的文件的名称和路径。必须使用REG SAVE 来预先创建这个文件,扩展名为 .hiv 。
reg restore 操作的返回值。
0 成功
1 失败
程序例子:
要将名为NTRKBkUp.hiv 的文件还原到 HKLM\Software\Microsoft\ResKit 项,并覆盖该项的现有内容,请键入:
REG RESTORE HKLM\Software\Microsoft\ResKit NTRKBkUp.hiv
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG SAVE

将指定的子项、项和注册表值的副本保存到指定文件中。
语法
REG SAVE KeyName FileName
用途:编辑任何注册表项之前,请使用 reg save 操作保存父子项。如果编辑失败,则可以使用reg restore 操作还原原来的子项。
使用REG LOAD之前也必须用REG SAVE预先建立文件。
参数
KeyName
指定子项的完全路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略\\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM 和 HKU。
FileName
指定所创建的文件的名称和路径。如果未指定路径,则默认当前路径。
reg save 操作的返回值。
0 成功
1 失败
示例
要将配置单元MyApp 作为名为 AppBkUp.hiv 的文件保存到当前文件夹中,请键入:
REG SAVE HKLM\Software\MyCo\MyApp AppBkUp.hiv
++++++++++++++++++++++++++++++++++++++++++++++++++++

REG UNLOAD

删除已加载的部分注册表。
语法
REG UNLOAD KeyName
参数
KeyName
指定要卸载的子项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为KeyName 的一部分。省略\\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM 和 HKU。
reg unload 操作的返回值。
0 成功
1 失败
示例
要卸载HKLM 中的配置单元 TempHive,请键入:REG UNLOAD HKLM\TempHive
实际应用例子:
写一个判断程序,运行程序,当目前系统处于“显示隐藏文件”状态时,运行它就自动不显示,当系统处于“不显示隐藏文件”状态时,运行它就自动显示。
程序难就难在怎么获取键值。
我们运行代码:

@echo off
mode con cols=102 lines=10
for /f "delims=" %%i in ('reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue') do echo %%i
pause>nul

运行上面代码显示内容如下:
-----------------------------------------------------------------------------------------
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL
CheckedValue REG_DWORD 0x1
-----------------------------------------------------------------------------------------
我们需要的数据只有“0x1”一个,从第4行为
CheckedValue REG_DWORD 0x1
它有前导空格,很讨厌,我们观察到1的前面是字母x,于是我们将x作为分隔符,显示第二行就行了。格式为"skip=4 tokens=2 delims=x",就可以截取数字“1”,嘿嘿。
写一个批处理程序,判断如果当前计算机处于显示状态,则隐藏文件,如果处于隐藏状态,则显示文件:

@echo off&setlocal enabledelayedexpansion
mode con cols=60 lines=20&color 9f
title 隐藏显示文件 
echo.&echo 彻底隐藏和显示文件或文件夹
echo.&echo 程序通过修改注册表来隐藏文件和文件夹。隐藏好后,即使选择“显示所有文件和文件夹”,具有隐藏属性的文件也无法显示。要想恢复显示文件,只有修改注册表回原样才行。操作难度不大,用这种办法保护信息安全,只能对付一般电脑小白。
echo 注:有些杀毒软件对修改注册表很敏感,允许程序运行即可,程序无毒可以放心。
echo.&echo.&echo.
set var=HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL
for /f "skip=4 tokens=2 delims=x" %%i in ('reg query "%var%" /v "CheckedValue"') do if /i "%%i"=="1" (
echo 当前计算机文件或文件夹处于显示状态。
set /p tem=是否隐藏文件?^(Y/N^)
if /i "!tem!"=="Y" reg add "%var%" /v CheckedValue /t REG_DWORD /d 0 /f
) else (
echo 当前计算机文件或文件夹处于隐藏状态。
set /p tem=是否显示文件?^(Y/N^)
if /i "!tem!"=="Y" reg add "%var%" /v CheckedValue /t REG_DWORD /d 1 /f
)
echo.&echo.&echo 按任意键退出。&pause>nul

Run 项会使程序在用户每次登录时自动运行。
读取注册表下的RUN项代码:

@echo off
for /f "tokens=2 delims=:" %%i in ('reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run') do echo %systemDrive%%%i
pause>nul
  • 14
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当使用命令提示符(CMD)修改注册表时,遇到“拒绝访问”错误,这是因为注册表中的某些项具有受限访问权限,只允许管理员用户或注册表所有者进行修改。以下是几种可能的原因和解决方法: 1. 缺少管理员权限:确保你以管理员身份运行CMD。右键点击CMD图标,并选择以管理员身份运行。 2. 注册表项受保护:某些注册表项被系统保护,不允许普通用户进行修改。你需要通过以下步骤禁用保护: a. 打开“组策略编辑器”,方法是使用快捷键 Win + R,然后输入“gpedit.msc”。 b. 在左侧导航栏中,选择“计算机配置”>“管理模板”>“系统”>“Windows组件”>“注册表”。 c. 双击右侧窗口中的“关闭注册表编辑器的受保护模式”。 d. 选择“已启用”,然后点击“应用”和“确定”按钮。 注意:此方法只适用于专业版或企业版的Windows操作系统。 3. 更改注册表所有者:你可能需要更改注册表项的所有者以获取访问权限。以下是更改所有者的步骤: a. 在CMD中使用以下命令导航到需要更改的注册表项:`regedit`。 b. 右键点击要更改的注册表项,并选择“权限”。 c. 在“高级”选项卡中,点击“更改”按钮。 d. 在弹出的窗口中,输入你希望成为新所有者的用户名,并点击“检测名称”按钮。 e. 确认用户名正确后,点击“确定”。 f. 在权限窗口中,确保你有完全控制权,然后点击“应用”和“确定”按钮。 如果以上方法仍然无法解决“拒绝访问”问题,那可能是因为你没有足够的权限来修改该注册表项。这种情况下,你可能需要咨询系统管理员或拥有相应权限的用户来帮助你修改注册表项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT老叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值