用批处理文件来操作注册表

--创建

创建分为两种,一种是创建子项(Subkey)
注:如果你对注册表的命名不是很清楚,可以看看注册表命名标准手册(http://www.sometips.com/tips/registryhack/204.htm)

我们创建一个文件,内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Test4Adam]

然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE/SOFTWARE/下创建了一个名字为“Test4Adam”的子项。

另一种是创建一个项目名称
那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Test4Adam]
"Test1"="Adam"
"Test2"=hex:61
"Test3"=dword:00000064

Test1的类型是“String Value”
Test2的类型是“Binary Value”
Test3的类型是“DWORD Value”

注意:如果你的注册表中不存在Test4Adam这个子项,那么该脚本会为你创建该子项。

--修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入即可,在此我就不再赘述。

--删除
我们首先来说说删除一个项目名称,我们创建一个如下的文件:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Test4Adam]
"Test1"=-

执行该脚本,HKEY_LOCAL_MACHINE/SOFTWARE/Test4Adam下的"Test1"就被删除了;

我们再看看删除一个子项,我们创建一个如下的脚本:

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE/SOFTWARE/Test4Adam]

执行该脚本,HKEY_LOCAL_MACHINE/SOFTWARE/Test4Adam就已经被删除了。

相信看到这里,.reg文件你基本已经掌握了。那么现在的目标就是用批处理来创建特定内容的.reg文件了,记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。就像上面那个例子:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Test4Adam]
"Test1"="Adam"
"Test2"=hex:61
"Test3"=dword:00000064
只需要这样:
@echo Windows Registry Editor Version 5.00>>test.reg

@echo [HKEY_LOCAL_MACHINE/SOFTWARE/Test4Adam]>>test.reg
@echo "Test1"="Adam">>test.reg
@echo "Test2"=hex:61>>test.reg
@echo "Test3"=dword:00000064>>test.reg


================================================

一、RegWrite(写入或新建注册表数据)

  * 新建子主键

  语法为:WshShell.RegWrite "子主键名/"

  例如,我们想新建一个子主键“HKEY_CURRENT_USER/MyReg”,可使用如下的语句:

  WshShell.RegWrite "HKCU/MyReg/"

  说明:子主键名必须以反斜线 (/) 结束,若不小心忘记输入了这个(/),则该方法返回的是键值,即表示你是想在  HKEY_CURRENT_USER/下建立了一个名叫MyReg的键值了。这一点一定要十分注意!

  注意引号里子主键的开头必须是下列根键名之一:



  HKEY_CURRENT_USER(可简写为HKCU)、HKEY_LOCAL_MACHINE (HKLM)、HKEY_CLASSES_ROOT(HKCR)、  HKEY_USERS和HKEY_CURRENT_CONFIG
  * 在子主键下建立新的键值(或改写已有的键值的数据)

  语法为:WshShell.RegWrite "子主键名/键值名","键值的数据","键值的类型"

  例如我们想在子主键“HKEY_CURRENT_USER/MyReg” 下新建一个字符串键值KeyValue,设置键值的数据为“str”,可使用如下的语句:

  WshShell.RegWrite "HKCU/MyReg/KeyValue", "str"

  (注:键值为字符串值,可省去"键值类型"的声明)

  若所建的为二进制值或DWORD值,数据为“1”,则还必须声明键值的类型,如下:

  WshShell.RegWrite "HKCU/MyReg/KeyValue",1,"REG_BINARY"

  WshShell.RegWrite "HKCU/MyReg/KeyValue",1,"REG_DWORD"

  注意二进制值和DWORD值的数据不能加引号,而字符串值的数据则必须加引号。

  二、RegDelete(删除注册表数据)

  * 删除一个子主键

  语法为:WshShell.RegDelete "子主键名/"

  例如,我们想删除子主键“HKEY_CURRENT_USER/MyReg”,可使用如下的语句:

  WshShell.RegDelete "HKCU/MyReg/"

  * 删除子主键的某个键值

  语法为:WshShell.RegDelete "子主键名/键值名"

  例如,我们想删除子主键“HKEY_CURRENT_USER/MyReg” 的键值KeyValue,可使用如下的语句:

  WshShell.RegDelete "HKCU/MyReg/KeyValue"

  类似于RegWrite,有一个“/”号表示的是删除子主键,没有“/”则表示要删除的是子主键下的键值。
除了WshShell对象外,我们还必须了解一下WScirpt 对象。WScirpt对象即代表Scripting Engine,只要启动Engine就会自动产生此对象。WScript对象提供了创建和读取对象的方法。要使用WSH的其他对象(例如WshShell对象),就必须先用WScript对象的有关方法(CreateObject、GetObject)来创建和读取。

  创建对象的语法如下:

  WScript.CreateObject(strProgID)

  其中strProgID就是我们所要创建的对象的标识名。

  例如:我们要使用WshShell对象及其属性和方法,首先就要用WScript对象的方法CreateObject来创建一个WshShell对象,语句如下:

  Set WSHShell = WScript.CreateObject("WScript.Shell")

  举一个例子吧。大家都知道,如果你使用了“开始”菜单中的“运行”,Windows将在列表框里记录下你“作案” 的痕迹。其实这些数据是记录在注册表中HKEY_CURRENT_USER/Software/Microsoft/Windows/

  CurrentVersion/Explorer/RunMRU子键下,我们只要把这个子键删除,然后再重新建立,不就可以了吗?

  现在我们可以来编写一个脚本了。以VBS为例,我们可以用记事本新建一个文件,然后输入(其中“//”后的文字为注释,不必输入):

  //定义对象,要编辑注册表,我们需要使用WSHShell对象及其方法

  Dim WSHShell

  //对象的方法CreateObject来创建WSHShell对象

  Set WSHShell = WScript.CreateObject("WScript.Shell")

  //然后我们使用WSHShell对象的方法RegDelete来删除 HKEY_CURRENT_USER/Software/Microsoft/

  Windows/CurrentVersion/Explorer/RunMRU子键

  WSHShell.RegDelete "HKCU/Software/Microsoft/

  Windows/CurrentVersion/Explorer/RunMRU/"

  //最后我们恢复该主键,并在该主键下恢复字符串值“MRUList”,设置其数据为空串

 WSHShell.RegWrite "HKCU/Software/Microsoft/

  Windows/CurrentVersion/Explorer/RunMRU/MRUList",""

  程序到此结束,我们把文件另存为CleanMRU.vbs就可以了。现在我们就可以使用Scripting Engine来执行这个程序了。假设我们刚才把这个文件保存在D:/TEMP里,我们就可以使用“开始”菜单的“运行”——Wcript.exe D:/TEMP/CleanMRU.vbs。重新启动,怎么样?“运行”里已经是空空如也了吧!

  如果我们这样费尽心思地编了程序,最后还是得靠手工来运行,那还不如每次直接用注册表编辑器来操作呢!其实我们完全可以让它在每次开机时自动加载。这么一说,大家肯定都知道了——我们可以使用注册表编辑器,在“HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/

  CurrentVersion/Run”子主键下建立一个字符串值 “CleanMRU”,设置其数据为"Wcript.exe D:/TEMP/CleanMRU.vbs"。嘿嘿,这样才算大功告成。以后你每次开机,Windows就会自动执行该脚本以清除 “运行”中的历史记录了。

  限于篇幅,本文仅仅介绍了WSH有关注册表修改部分的对象的初步使用。我们只要在脚本里加上一些简单的语句,就可以很方便地实现交互性的操作——当然,这就需要大家掌握更多的关于WSH和VBScript的知识。如果感兴趣的话,大家可以到微软网站下载有关WSH和VBScript的帮助文档,URL分别是http://www.microsoft.com/china/ scripting/windowshost/wshdoc.exe和http://www.microsoft.com/china/scripting/vbscript/download/ vbsdoc.exe(都是中文)。另外,在Windows的Samples目录下,有一个WSH文件夹,那里面有不少.vbs和.js例程,大家可以去打开来看看(鼠标右击图标,选择“编辑”),相信一定会有不少收获的。

  最后,如果你的机器上已经安装了Windows Scripting Host,而VBS程序仍然无法运行的话,很可能是你自己或其他应用程序修改了.VBS的关联。据笔者所知,几乎每台机器上都装有的“超级解霸”就会修改.VBS文件的关联。没关系的,你只要从“控制面板”—“添加/删除程序”—“Windows安装程序”—“附件”—“详细资料”里先卸掉,然后再重新装上“Windows Scripting Host”就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值