ADODB.Stream的Write方法不能采用从StdRegProv WMI类获取的字节数组

时间:2018-12-21 16:20:50

标签: vbscript wmi adodb

我的二进制注册表值位于

HKEY_LOCAL_MACHINE\SOFTWARE\My key\My value

我想以编程方式读取其数据,然后使用VBScript将数据导出到文件中。
请注意,我希望生成的文件以其自己的二进制格式包含确切的数据,而不是包含一对十六进制数字的长文本,每个十六进制数字分别对应于数据的一个字节。

因此,我使用StdRegProv WMI类和GetBinaryValue方法来获取表示数据的字节数组。然后,我实例化一个Stream对象,调用Open方法,并将字节数组传递给Write方法。最后,我通过调用SaveToFile方法来创建文件。但是,我叫WScript.Echo来显示一条消息,指示成功。

这是我的代码:

Const HKLM = 2147483650

Dim regProv, wshShell
Set regProv = GetObject("winmgmts:\\.\root\default:StdRegProv")
Set wshShell = CreateObject("WScript.Shell")

Dim bytes(10)
regProv.GetBinaryValue HKLM, "Software\My key", "My value", bytes

Set stream = CreateObject("ADODB.Stream")
Stream.Open
Stream.Type = 1
Stream.Write bytes
Stream.SaveToFile wshShell.CurrentDirectory & "\My value.dat"
Stream.Close

WScript.Echo "Value saved in the file My value.dat"

问题是,当程序到达Stream.Write时,出现以下错误。

  

参数类型错误,超出可接受范围或彼此冲突。

谁能看出我的错误?

0 个答案:

没有答案