何谓REG文件
REG文件实际上是一种注册表脚本文件,双击REG文件即可将其中的数据导入到注册表中。利用REG文件我们可以直接对注册表进行任何修改操作,它对注册表的操作可以不受注册表编辑器regedit.exe 被禁用的限制,因此功能更为强大、灵活。另外,由于REG文件可以用任何文本文件编辑工具(例如记事本)进行修改,因此通过它对注册表数据进行修改后,如果发生错误,还可以通过改回REG文件中的数据后再导入,从而实现恢复操作,因此它又较之直接用注册表编辑器修改更安全,所以熟练掌握REG文件的运用,有时可以起到事半功倍、意想不到的效果。
创建REG文件
REG文件的创建是非常简单的,可以通过任何一个文本文件编辑工具来实现。我们就以创建一个可以解除注册表禁用限制的REG文件restore.reg为例来介绍一下具体过程。
打开记事本,在记事本文件中输入以下内容:
REGEDIT4
空一行
[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/System]
"DisableRegistryTools"=dword : 00000000
保存此文件,在打开的“另存为”对话框中选择好保存路径,再单击“保存类型”中的下拉箭头选择“所有文件”(一定要选择此步,不然保存后的文件会自动加上TXT的扩展名),然后在“文件名”中输入“restore.reg”后按“保存”按钮(如图1)。以后你就可以通过双击这个restore.reg来直接解除禁用注册表的限制。
对REG文件进行修改
我们在利用REG文件对注册表进行操作时,要操作的对象有两种:一种是对主键进行操作,一种是对主键下的键值项目进行操作。对主键的操作有添加、删除两种,而对键值项目的操作则分为添加、修改和删除三种。下面我们就一个一个来实现。
1、对主键的操作
(1)添加主键
要想利用REG文件在注册表中添加一个主键是非常方便的,只需要在文件体部分直接以“[ ]”的形式写上要添加的主键路径即可。
例如:在HKEY_LOCAL_MACHINE/Software主键下添加一个名称为“文心软件工作室”的主键,内容如下:
REGEDIT4
空一行
[HKEY_LOCAL_MACHINE/Software/文心软件工作室]
(2)删除主键
要用REG文件在注册表中删除一个主键,在文件体部分“[ ]”括起来的主键路径前面加上一个“-”符号即可,删除主键操作将会一并删除该主键下的所有子键及其键值项目,所以这是个比较危险的命令,使用要十分注意。例如要删除我们刚才添加的那个主键,内容如下:
REGEDIT4
空一行
[-HKEY_LOCAL_MACHINE/Software/文心软件工作室]
2、对键值项目的操作
(1)添加键值项目
添加键值项目的操作如同注册表编辑器中的“新建”命令,一般来说,键值的数据类型分为三种:字符串值、二进制值和DWORD值。在REG文件中我们也要设置添加的键值项目的数据类型,如果要添加字符串值,则“=”号后边要用英文的双引号引住数据;如果添加的为DWORD类型值,“=”号后边的格式为“dword:数据”;如果添加的为二进制值,“=”号后边则为“hex:数据”。要设置默认值的键值数据时,“=”号前边的键值名称应为“@”符号,并且没有双引号。
例如我们要在“HKEY_LOCAL_MACHINE/Software/文心软件工作室”主键下设置默认键值为“文心工作室”,并分别添加“姓名”键值项目(字符串值)、“年龄”键值项目(二进制值)、“婚否”键值项目(DWORD值)。相应的REG文件内容如下:
REGEDIT4
空一行
[HKEY_LOCAL_MACHINE/Software/文心软件工作室]
@="文心工作室"
"姓名"="徐海斌"
"年龄"=hex:23
"婚否"=dword:00000000
在添加键值项目时,如果该键值所在的主键路径不存在的话,在添加键值项目的同时会自动新建该主键。另外在添加字符串值的键值项目时还有一点值得注意的地方,当这个字符串值是包括文件路径的字符串值时,路径分隔符应用“\\”双斜杠表示,以示和注册表中的主键路径分隔符区别开来。
例如我们要在注册中“HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run”主键下的启动组中添加位于“C:/PROGRAM FILES/BOOBSOFT/屏幕保护控制器”目录下的一个应用程序“屏幕保护控制器.exe”的启动键值项目,REG文件内容如下:
REGEDIT4
空一行
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run]
"scr"="C://PROGRAM ILES//BOOBSOFT//屏幕保护控制器//屏幕保护控制器.exe"
(2)修改键值项目
其实修改和添加很类似,对于已经存在的键值项目,我们要修改其数据时,只需要将正确的数据赋予对应的键值项目即可,新的数据会自动覆盖错误的旧数据,例如,当某些恶意网页修改了你的IE标题栏文字,在标题栏中总是显示那个网站的广告文字,很讨厌,我们知道修改IE标题栏文字是通过“HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main”主键下的“Window Title”键值的数据进行设置的,那么我们就可以通过REG文件改回默认的IE标题栏文字。
REGEDIT4
空一行
[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main]
"Window Title"=""
(3)删除键值项目
用REG文件删除键值项目也是很方便的,和删除主键相类似,也是通过“=”号实现的,不过这次不是加在前面,而是把“-”符号放在键值项目的等号后面。例如一些恶意网页在修改IE标题栏等设置的同时,还修改了开始菜单相关的键值项目数据,使得开始菜单中的“运行”、“查找”、“关闭”等命令都不见了,导入下面的这个REG文件删除相应的键值项目后就可以找回开始菜单中的这些命令了。
REGEDIT4
空一行
[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer]
"NoRun"=-(解除“运行”命令)
"NoClose"=-(找回“关闭系统”命令)
"NoFind"=-(找回“查找”命令)
*******************************************************************************************************************************************
Now i can read this file in the MCE SDK foler:
the full path is : C:/Program Files/Microsoft SDKs/Windows Media Center/v5.0/Samples/MSAS Sample/MediaState/MSASState.reg
REGEDIT4
[HKEY_CLASSES_ROOT/MSASState.MediaStatusSink]
@="MSASState.MediaStatusSink"
[HKEY_CLASSES_ROOT/MSASState.MediaStatusSink/CLSID]
@="{380AA9F1-5047-40D0-8BE9-18AB489CA469}"
[HKEY_CLASSES_ROOT/CLSID/{380AA9F1-5047-40D0-8BE9-18AB489CA469}]
@="MSASState.MediaStatusSink"
[HKEY_CLASSES_ROOT/CLSID/{380AA9F1-5047-40D0-8BE9-18AB489CA469}/InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="MSASState.MediaStatusSink"
"Assembly"="MSASState, Version=6.0.6000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/Program Files/Microsoft SDKs/Windows Media Center/v5.0/Samples/MSAS Sample/MediaState/MSASState.DLL"
[HKEY_CLASSES_ROOT/CLSID/{380AA9F1-5047-40D0-8BE9-18AB489CA469}/ProgId]
@="MSASState.MediaStatusSink"
[HKEY_CLASSES_ROOT/CLSID/{380AA9F1-5047-40D0-8BE9-18AB489CA469}/Implemented Categories/{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]
[HKEY_CLASSES_ROOT/CLSID/{380AA9F1-5047-40D0-8BE9-18AB489CA469}/Implemented Categories/{FCB0C2A3-9747-4c95-9d02-820AFEDEF13F}]
@="Media Status Sink"
我的理解是在注册表中添加了一个组件:mscoree.dll 从这里也可以看出来 :"Assembly"="MSASState, Version=6.0.6000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
"RuntimeVersion"="v2.0.50727"