利用VB Script修改注册表

2011年3月20日 | 分类: Windows | 标签: , ,

***由于修改注册表存在一定的风险,所以在更改之前请导出备份好注册表,以免因修改不当而影响系统的使用。***

修改注册表的方法很多,譬如可以直接运行regedit创建或修改键值;或者写一个.reg文件导入注册表;或者运行cmd,使用reg命令修改注册表;或者把命令写成一个bat文件来运行。但因为要作用在每台电脑上且要配合原来的脚本,所以需要在域组策略里登录脚本中补充部分Script脚本代码来达到修改域中PC注册表的目的。本人其实不会写vbs来修改注册表,只是此次因工作需要,通过在网上学习照葫芦画瓢才成功写出这么一点点脚本(我觉得我这种本领还是挺强的。^_^),希望能有益于人。本文主要目的是要说如何通过vbs修改二进制REG_BINARY类型的键值。

对于REG_DWORD类型的键值,我们直接可以使用Regwrite写入修改就行了,譬如:

Set A=Createobject(“WScript.Shell”)
A.Regwrite “HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger\AVEnbl”, “00000001″, “REG_DWORD”

读取是A.Regread, 我原本想照葫芦画瓢只把后两项依次换成16进制的数据和二进制的类型REG_BINARY,但是运行起来会报错,其实Regwrite也应该是可能作用于REG_BINARY的,但是我的键值数据实在太长,所以没法正常写入(我认为是这样的)。我的数据值是hex(3):22,00,43,00,3A,00,5C,00,50,00,72,00,6F,00,67,00,72,00,61,\
00,6D,00,20,00,46,00,69,00,6C,00,65,00,73,00,5C,00,45,00,53,00,45,00,54,00,\
5C,00,45,00,53,00,45,00,54,00,20,00,4E,00,4F,00,44,00,33,00,32,00,20,00,41,\
00,6E,00,74,00,69,00,76,00,69,00,72,00,75,00,73,00,5C,00,65,00,67,00,75,00,\
69,00,2E,00,65,00,78,00,65,00,22,00,00,00

后来通过网上查询得知(网络真是个好东西)需要先将这些十六进制数据换成十进制(http://www.easycalculation.com/hex-converter.php但是这样一个一个的改数据量太大,哪位高人有好的方法或软件推荐一下,谢谢了!!!,我是用同事做的一个小工具,一次性将所有16进制改换算成了10进制。),再定义一个数组,就可以写入注册表了,方法如下:

Set A=Createobject(“WScript.Shell”)
A.Regwrite “HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger\AVEnbl”, “00000001″, “REG_DWORD”
Const HKEY_CURRENT_USER=&H80000001
Set objreg=GetObject(“Winmgmts:root\default:StdRegProv”)
strPath=”Software\Microsoft\MSNMessenger”
uBinary=Array(34,0,67,0,58,0,92,0,80,0,114,0,111,0,103,0,114,0,97,0,109,0,32,0,70,0,105,0,108,0,101,0,115,0,92,0,69,0,83,0,69,0,84,0,92,0,69,0,83,0,69,0,84,0,32,0,78,0,79,0,68,0,51,0,50,0,32,0,65,0,110,0,116,0,105,0,118,0,105,0,114,0,117,0,115,0,92,0,101,0,103,0,117,0,105,0,46,0,101,0,120,0,101,0,34,0,0,0)
objreg.SetBinaryValue HKEY_CURRENT_USER, strPath, “Antivirus”, uBinary

这样把两个合二为一存成一个vbs,再放到域组策略中,就可以成功作用在域中所有PC上了,本人实践过,绝对成功。

参考Microsoft文章链接:http://msdn.microsoft.com/en-us/library/aa393286(VS.85).aspx

Written by Nile Jiang
无猖狂以自彰,当阴沉以自深。

目前还没有任何评论.
注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。