我的二进制注册表值位于
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
时,出现以下错误。
参数类型错误,超出可接受范围或彼此冲突。
谁能看出我的错误?