注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

火力光波的博客

火一般的热情 光一样的速度

 
 
 

日志

 
 

初谈制作注册表REG脚本文件(下)  

2010-12-20 22:51:48|  分类: 注册表 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

四、如何修改注册表REG脚本文件

用REG文件修改注册表,应该对键值项有所了解,尤其是默认键值项的相关知识,为此下面先作个简单的介绍,供参考!
       ①在注册中,对每一个主键或子键,系统只允许一个默认键值项,不允许多于一个或没有默认键值项。因此,在创建新键或没有默认键值项时,系统将自动对每一个键给出一个默认键值项,它的键值名为(默认),键值类型是字符串,键值“数值未设置”状态。根据这一条分析,如删除默认键值项,系统给你还原一个“数值未设置”的默认键值项。因此,我们常用“@=-”还原默认键值项。
       ②默认键值项的键值在注册中表现有三种状态:数值未设置、已输入数值、没输入数值(即键值为空)。
在REG文件中,“数值未设置”状态的表现是不显示,只有在输入了数值或键值为空时,默认键值项才能显示在REG文件上。
       ③在REG文件中,默认键值项的表现也有三种命令,@=键值符:表示键值为空,@=键值符 键值:表示输入了数值,@=-:表示删除默认键值项。
这三种命令,在“不允许多于一个或没有默认键值项”的原则下,都能在数值未设置的默认键值项中得到有效的执行。

1、修改键名

用REG文件修改注册表的键名,由于操作没有手工直接修改方便,在这就不作详细介绍。其方法与下面的“移动内容”类似,删除一个原键名同时创建一个新键名。除删除路径的原键名外,再用记事本菜单编辑中的“替换”,修改其它路径中的原键名。
写法如下:
-------------------------------------------------------------
注册表版本

[-路径\原键名]

[路径\新键名]
键值项内容

[路径\新键名\子键名]
键值项内容
-------------------------------------------------------------
以上,[-路径\原键名]表示删除原键名,“新键名”是修改后的键名。

2、修改键值名

修改键值名,如在导出的REG文件中修改,只将“原键值名”改为“新键值名”,在执行中却是创建了一“新键值名”,“原键值名”仍然存在。因此,必须删除这个“原键值名”。
其写法:
    将原键值名改为新键值名=键值符 键值
    原键值名=-
(1)修改默认键值名
对默认键值项的键值名进行修改,实际上是创建一个与默认的键值类型、键值相同的非默认键值项,原来的默认键值项仍然存在。
要使原默认键值项不存在的方法有两种:
①删除原默认键值项。用@=-删除原默认的,让系统还原一个“数值未设置”的默认键值项。
其写法:将@改为"新键值名"=键值符 键值
                @=- 
②创建一个默认键值项。用这个新的默认键值项修改原来的默认键值项。
其写法:将@改为"新键值名"=键值符 键值
                @=键值符 键值
从运行的结果来看,修改默认键值名,是将默认键值名改为非默认键值名,也就是将默认键值项改为非默认键值项,同时添加一个新的默认键值项。
例1,在 HKEY_CLASSES_ROOT\*\shell\NewWindow 下,将默认键值名改为"新名1";
在 HKEY_CLASSES_ROOT\*\shell\NewWindow\command 下,将默认键值名改为"新名2"。
第一步,将NewWindow导出保存,用记事本打开另存一份副本修改;

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客
第二步,将第一条路径下的默认键值名改为"新名1",在下一行中输入@=-
将第二条路径下的默认键值名改为"新名2",在下一行中输入@="explorer.exe %1",保存。
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客
运行效果:
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客
(2)修改非默认键值名
①改为默认键值名
将非默认键值名改为默认键值名,实际上是创建了一个默认键值项,在运行中它将对原默认键值项进行修改。同时原来的非默认键值项仍然存在。
其写法:将"原键值名"改为@=键值符 键值
            "原键值名"=-
②改为非默认键值名
将非默认键值名改为非默认键值名,注意改后的新键值名,不能与在同一路径下的其它键值名相同。
其写法:将"原键值名"改为"新键值名"=键值符 键值
             "原键值名"=-
例2,对例1修改后的结果,再作修改如下:
在 HKEY_CLASSES_ROOT\*\shell\NewWindow 下,将非默认键值名"新名1"改为默认的;
在 HKEY_CLASSES_ROOT\*\shell\NewWindow\command 下,将非默认键值名"新名2"改为"开心"。
第一步,将NewWindow导出保存,用记事本打开另存一份副本修改;
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客
第二步,将第一条路径下的键值名"新名1"改为@,在下一行中输入"新名1"=-
将第二条路径下的默认键值名"新名2"改为"开心",在下一行中输入"新名2"=-,保存。
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客
运行效果:
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

3、修改键值类型

在REG文件中修改键值符,即是在注册表中修改键值类型。必须指出,修改键值类型,应该修改对应的键值或键值为空,否则运行无效。
其写法:@或"键值名"=键值符 键值。
键值符:""、hex:、dword:、hex(7):、hex(2): 。
例3,在 HKEY_CLASSES_ROOT\*\shell\NewWindow\command 下
将默认键值项的键值类型改为"字符串值",键值为:explorer.exe %1;
将非默认键值项"开心"的键值类型改为“二进制值”,键值为:01,00,00,00;
第一步,将command导出保存,用记事本打开另存一份副本修改;

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

第二步,将默认的键值类型hex:改为"",输入键值:explorer.exe %1;
将非默认"开心"的键值类型、键值dword:00000000改为hex:01,00,00,00。

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

运行效果:

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

4、修改键值

其写法:@或"键值名"=键值符 键值。
例4,将下面注册表中的键值作如下修改:
默认的键值改为:explorer.exe %1, 键值名1的键值改为:01,00,00,00,
键值名2的键值改为:01000000,      键值名3、4的键值:为空。

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

第一步,将command导出保存,用记事本打开另存一份副本修改;

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

第二步,默认的: "字符串值"    改为 "explorer.exe %1"
            "键值名1":00,00,00,01 改为  01,00,00,00
            "键值名2":00000001    改为   01000000
            "键值名3":清除 31,00,32,00,33,00,00,00,00,00
            "键值名4":清除 34,00,35,00,36,00,00,00
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

运行效果:

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

5、互换键值名

分析:在同一路径下互换键值名,例如将"键值名1"改为"键值名2",在执行时是键值名项2的键值类型、键值变成了键值项1的键值类型、键值,键值项1的"键值名1"并没有发生改变,键值项1的键值类型、键值还是原来的。如同时将"键值名2"改为"键值名1",同样执行的是键值项1的键值类型、键值变成了键值项2的键值类型、键值。可见,两个键值名互换,执行的是两个键值项的键值类型、键值进行了对调,两个键值名并没有发生改变。两个以上的键值名也可轮换,其道理类似。
①非默认键值名之间互换
其写法:将"键值名1"改为"键值名2"=键值符1 键值1
             将"键值名2"改为"键值名1"=键值符2 键值2。
②默认与非默认键值名之间互换
其写法:将@改为"键值名"=键值符1 键值1
             将"键值名"改为@=键值符2 键值2。
③四个键值项键值名的轮换
例5,在路径 HKEY_CLASSES_ROOT\*\shell\NewWindow\command 下,
将默认的 @改为"键值名1","键值名1"改为"键值名2","键值名2"改为"键值名3","键值名3"改为默认的 @ 。
未改键值名前时的情形:

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

第一步,将command键导出保存为“脚本.reg”文件,用记事本打开另存一份副本修改;

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

第二步,在打开副本中,按照上面的要求进行修改,修改后保存。

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客
运行效果:
初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

6、移动内容

移动内容,是指将注册表中的某键及其以下内容移动到指定的路径位置。在编辑REG文件时,移动的方法是:删除原路径位置中的某键及其以下的内容,同时在指定的路径位置创建某键及其以下内容,这个方法类似于“剪切”与“粘贴”,不过具体的操作没有这么简单。
例6,将 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\NewWindow 中的 NewWindow 键及其以下内容,
移动到路径 HKEY_CLASSES_ROOT\*\shell 下。
①将 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\NewWindow 中的 NewWindow 键,
导出保存为“移动.reg”文件,用记事本打开另存一份副本修改;

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

②在打开的文件中间添加删除NewWindow 键的原路径:
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\NewWindow]

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

 ③除了删除NewWindow 键的这条原路径外,用记事本菜单编辑中的“替换”,将所有路径中的
“HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell”替换为
“HKEY_CLASSES_ROOT\*\shell”,并保存。下面是替换、保存后的情形:

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

以上,如没有删除NewWindow 键,则是将某键及其以下内容从一个位置复制到另一个位置。
运行效果:

初谈制作注册表REG脚本文件(三) - 火力光波 - 火力光波的博客

总结:
(1)基本原理
用REG文件修改注册表,对在REG文件的写法和在注册表中的执行,其原理可概括为以下三种命令的写法、四条命令的执行:
①替换、创建命令
[路径\键名]
键值名=键值符 键值
其中,键值名:包括默认的@与非默认的"键值名",即,键值名=@或"键值名"。
          键值符:""、hex:、dword:、hex(7): 、hex(2): 。
对REG文件中的键名或键值名,在注册表中执行时有两种情况:
其一,如与注册表中的键名或键值名相同,则在注册表中执行“替换”命令,也就是用REG文件中给出的“键值类型、键值”来替换注册表中的“键值类型、键值”。
其二,如与注册表中的键名或键值名不同,则在注册表中执行“创建”命令,其中[路径\键名]为创建新的“键名”,键值名=键值符 键值为创建新的“键值名”。
②删除命令
[-路径\键名]
键值名=
-
对REG文件中的键名或键值名,如与注册表中的键名或键值名相同,则在注册表中执行“删除”命令,删除注册表中的“键名”或“键值名”及其以下内容,也就是说删除“键名”及其以下内容或“键值项”;如与注册表中的键名或键值名不同,则在注册表中不执行命令。
③清除命令
[路径\键名]
键值名=键值符
当键值符为dword:时,应写成:dword:00000000。
对REG文件中的键名或键值名,如与注册表中的键名或键值名相同,则在注册表中执行“清除”命令,即清除“键值”使键值为空;如与注册表中的键名或键值名不同,则在注册表中不执行命令。
以上三种命令的写法,在注册表中四条命令的执行,还可概括为:
REG文件与注册表中的键名或键值名,如相同,则执行“替换、删除、清除”命令;如不同,则执行“创建”命令。其它为不执行命令。
④相同键值名的执行。运行的REG文件中有多个相同的键值名,在注册表中执行的是相同键值名中的最下面一个,如下面执行的是:“@或"键值名"=键值符”。
@或"键值名"=-
@或"键值名"=键值符 键值
@或"键值名"=键值符
(2)几点体会
①用REG文件修改注册表,能解决手工无法修改的问题。如修改默认键值项的键值名、键值类型。
②用REG文件修改注册表,能多线、多点进行同时修改。所谓多线、多点,也就是在多条不同路径下,对多个键值名、键值类型、键值的点进行修改,同时对这些修改都可以放在一个REG文件中一并运行。
③在注册表中手工修改的键名、键值名、键值类型、键值等,与在REG文件修改注册表比较,手工修改注册表虽有局限性,但直接、快捷、有效。
④正确评价注册表备份。备份注册表是在修改注册表前进行的,用导入备份文件的方法,能否将修改后注册表还原与备份文件一样呢,回答是这不可能。按照上面分析,备份的REG文件可恢复已删除的内容,还原已修改的键值类型、键值,但无法删除新创建的键、键值项。又由于修改键名、键值名的方法,是删除原来的键、键值项,重新创建键、键值项的,可见,用导入备份的方法又不能去掉修改的键名、键值名。如创建的键、键值项和修改的键名、键值名较多,时间长了又记不住它们的路径、位置,要想再修改、删除它们就更难了。解决这个问题的办法,我的方法是利用注册表的收藏夹,将创建、修改的键名、键值名收藏起来,保存好修改注册表的REG文件,以备今后查找。

( 上篇   中篇  下篇 )

注册表的基本知识 - 火力光波 - 火力光波的博客

  评论这张
 
阅读(1695)| 评论(6)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017