您的位置:首页 > 其它

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

2012-01-05 13:26 232 查看
四、如何修改注册表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导出保存,用记事本打开另存一份副本修改;



第二步,将第一条路径下的默认键值名改为"新名1",在下一行中输入@=-;

将第二条路径下的默认键值名改为"新名2",在下一行中输入@="explorer.exe %1",保存。



运行效果:





(2)修改非默认键值名

①改为默认键值名

将非默认键值名改为默认键值名,实际上是创建了一个默认键值项,在运行中它将对原默认键值项进行修改。同时原来的非默认键值项仍然存在。

其写法:将"原键值名"改为@=键值符 键值

"原键值名"=-。

②改为非默认键值名

将非默认键值名改为非默认键值名,注意改后的新键值名,不能与在同一路径下的其它键值名相同。

其写法:将"原键值名"改为"新键值名"=键值符 键值

"原键值名"=-。

例2,对例1修改后的结果,再作修改如下:

在 HKEY_CLASSES_ROOT\*\shell\NewWindow 下,将非默认键值名"新名1"改为默认的;

在 HKEY_CLASSES_ROOT\*\shell\NewWindow\command 下,将非默认键值名"新名2"改为"开心"。

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



第二步,将第一条路径下的键值名"新名1"改为@,在下一行中输入"新名1"=-;
将第二条路径下的默认键值名"新名2"改为"开心",在下一行中输入"新名2"=-,保存。



运行效果:





3、修改键值类型

在REG文件中修改键值符,即是在注册表中修改键值类型。必须指出,修改键值类型,应该修改对应的键值或键值为空,否则运行无效。

其写法:@或"键值名"=键值符 键值。

键值符:""、hex:、dword:、hex(7):、hex(2): 。

例3,在 HKEY_CLASSES_ROOT\*\shell\NewWindow\command 下

将默认键值项的键值类型改为"字符串值",键值为:explorer.exe %1;

将非默认键值项"开心"的键值类型改为“二进制值”,键值为:01,00,00,00;

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



第二步,将默认的键值类型hex:改为"",输入键值:explorer.exe %1;

将非默认"开心"的键值类型、键值dword:00000000改为hex:01,00,00,00。



运行效果:



4、修改键值

其写法:@或"键值名"=键值符 键值。

例4,将下面注册表中的键值作如下修改:

默认的键值改为:explorer.exe %1, 键值名1的键值改为:01,00,00,00,

键值名2的键值改为:01000000, 键值名3、4的键值:为空。



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



第二步,默认的: "字符串值" 改为 "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



运行效果:



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"改为默认的 @ 。

未改键值名前时的情形:



第一步,将command键导出保存为“脚本.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”文件,用记事本打开另存一份副本修改;



②在打开的文件中间添加删除NewWindow 键的原路径:

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\NewWindow]



③除了删除NewWindow 键的这条原路径外,用记事本菜单编辑中的“替换”,将所有路径中的

“HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell”替换为

“HKEY_CLASSES_ROOT\*\shell”,并保存。下面是替换、保存后的情形:



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

运行效果:



总结:

(1)基本原理

用REG文件修改注册表,对在REG文件的写法和在注册表中的执行,其原理可概括为以下三种命令的写法、四条命令的执行:

①替换、创建命令

[路径\键名]

键值名=键值符 键值

其中,键值名:包括默认的@与非默认的"键值名",即,键值名=@或"键值名"。

键值符:""、hex:、dword:、hex(7): 、hex(2): 。

对REG文件中的键名或键值名,在注册表中执行时有两种情况:

其一,如与注册表中的键名或键值名相同,则在注册表中执行“替换”命令,也就是用REG文件中给出的“键值类型、键值”来替换注册表中的“键值类型、键值”。

其二,如与注册表中的键名或键值名不同,则在注册表中执行“创建”命令,其中[路径\键名]为创建新的“键名”,键值名=键值符 键值为创建新的“键值名”。

②删除命令

[-路径\键名]

键值名=-

对REG文件中的键名或键值名,如与注册表中的键名或键值名相同,则在注册表中执行“删除”命令,删除注册表中的“键名”或“键值名”及其以下内容,也就是说删除“键名”及其以下内容或“键值项”;如与注册表中的键名或键值名不同,则在注册表中不执行命令。

③清除命令

[路径\键名]

键值名=键值符

当键值符为dword:时,应写成:dword:00000000。

对REG文件中的键名或键值名,如与注册表中的键名或键值名相同,则在注册表中执行“清除”命令,即清除“键值”使键值为空;如与注册表中的键名或键值名不同,则在注册表中不执行命令。

以上三种命令的写法,在注册表中四条命令的执行,还可概括为:

REG文件与注册表中的键名或键值名,如相同,则执行“替换、删除、清除”命令;如不同,则执行“创建”命令。其它为不执行命令。

④相同键值名的执行。如运行的REG文件中有多个相同的键值名,在注册表中执行的是相同键值名中的最下面一个,如下面执行的是:“@或"键值名"=键值符”。

@或"键值名"=-

@或"键值名"=键值符 键值

@或"键值名"=键值符

(2)几点体会

①用REG文件修改注册表,能解决手工无法修改的问题。如修改默认键值项的键值名、键值类型。

②用REG文件修改注册表,能多线、多点进行同时修改。所谓多线、多点,也就是在多条不同路径下,对多个键值名、键值类型、键值的点进行修改,同时对这些修改都可以放在一个REG文件中一并运行。

③在注册表中手工修改的键
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: