使用VBS脚本改写注册表
事实上,操作系统除了提供易于操作的使用界面外,还应当有一套内建的Script(脚本)语言才算完整。从某种角度来说,批处理文件可以说就是MS-DOS下的脚本语言。到了Windows时代,虽然Windows系统仍然保留了批处理,但是批处理在Windows中就显得功能过于简单,无法满足用户的需要了——比如修改注册表,批处理能做得到吗?事实上, Windows 98之后的Windows系统,除了保留原来的批处理系统之外,开始加入了对脚本语言的支持,这就是“Windows Scripting Host”,中文译名为“Windows 脚本宿主”,简称WSH。
WSH本身并不是脚本语言,它是脚本语言的运行环境,WSH支持的脚本语言有JScript(微软版的JavaScript,与真正JavaScript不太一样)和VBScript——这个东东大家一定很熟悉啦,网页上常用。
WSH的脚本引擎(Scripting Engine)有两种方式,一种是Command方式的CScript.exe,另一种是Windows方式的WScript.exe。我们编写的脚本程序(扩展名为“.js”和“.vbs”的纯文本文件)必须通过这两者之一来加载运行。
虽然WSH支持JScript和VBScript语言,但仍然要配合WSH本身所提供的一些对象,以及对象的属性(Properties)和方法(Method)才能够发挥最大的效用。关于JScript和VBScript的程序设计我们这里就不多说了。我们现在还是把注意力放在WSH的对象上面。事实上,本文涉及的注册表编程就几乎不需要关于VBScript的任何知识,我们只需简单地套用现成的语句就可以了。
WSH中的对象主要有:WScirpt、WshArguments、WshShell、 WshUrlShortcut、WshNetwork、 WshSpecialFolders、WshCollection、 WshEnvironment、WshShort等。
每一个对象又都有各自的属性和方法。在这里我们仅就访问注册表所涉及的有关对象的方法和属性略做介绍。
首先是WshShell对象。该对象可用来设置系统环境变量以及修改注册表的数据。要修改注册表的数据,需要使用WshShell对象的三种方法: RegDelete(删除注册表数据)、RegWrite(写入或新建注册表数据)和 RegRead(读取注册表数据)。
通常我们只需要用到前两种方法,它们具体的使用方法如下:
一、RegWrite(写入或新建注册表数据)
* 新建子主键
语法为:WshShell.RegWrite "子主键名"
例如,我们想新建一个子主键“HKEY_CURRENT_USERMyReg”,可使用如下的语句:
WshShell.RegWrite "HKCUMyReg"
说明:子主键名必须以反斜线 () 结束,若不小心忘记输入了这个(),则该方法返回的是键值,即表示你是想在 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_USERMyReg” 下新建一个字符串键值KeyValue,设置键值的数据为“str”,可使用如下的语句:
WshShell.RegWrite "HKCUMyRegKeyValue", "str"
(注:键值为字符串值,可省去"键值类型"的声明)
若所建的为二进制值或DWORD值,数据为“1”,则还必须声明键值的类型,如下:
WshShell.RegWrite "HKCUMyRegKeyValue",1,"REG_BINARY"
WshShell.RegWrite "HKCUMyRegKeyValue",1,"REG_DWORD"




