VBS写入较长的二进制注册表键值的方法

举个例子

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]

"ShellState"=hex:24,00,00,00,73,a0,01,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  01,00,00,00,0d,00,00,00,00,00,00,00,00,00,00,00

VBS似乎只能写较短的二进制代码,无法写入较长的。比如

set r=wscript.createobject("wscript.shell")
r.regwrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellState",&H2401aaff,"REG_BINARY"

这段代码可以写入,但是如果在增加的话,就会出现错误。

较长的二进制可通过WMI可以实现,代码如下

'Define constant
Const HKEY_CR = &H80000001 'HKEY_CURRENT_USER常量,具体参看本章最后附录部分
Const REG_BINARY=3 '二进制类型

'string varable
strComputer = "."
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer"
strValue = "ShellState"

'binary array
Dim arrData
arrData=Array(&H24,&H00,&H00,&H00,&H73,&Ha0,&H01,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H01, &H00,&H00,&H00,&H0d,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00)

'registry object
Set objRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

'create registry key
objRegistry.CreateKey HKEY_CR, strKeyPath

'setup the binary keyvalue
retcode = objRegistry.SetBinaryValue(HKEY_CR, strKeyPath, strValue, arrData)

'sample error handle
If (retcode = 0) And (Err.Number = 0) Then
  WScript.Echo "Binary value added successfully"
Else
  ' An error occurred
  WScript.Echo "An error occurred. Return code: " & retcode
End If

补充一下,使用WMI的StdRegProv类对注册表操作时,需要用到的几个常量

Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_DYN_DATA = &H80000006

Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_MULTI_SZ = 7

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值