将十六进制字符串转换为数组并将其写入注册表 - VBSCript [英] Convert Hex String into Array and Write it to registry - VBSCript

查看:35
本文介绍了将十六进制字符串转换为数组并将其写入注册表 - VBSCript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个名为Hex"的字符串,其值如下:

Here is a string named "Hex" with the value below:

43,00,23,00,01

现在我正在尝试将其写入二进制注册表项,为此我需要使用以下命令:

Now I'm trying to write it into a binary registry key, for this purpose I need to use the command below:

arrValues = Array(1,2,3)

我已将1,2,3"替换为Hex",但似乎不起作用:

I have replaced "1,2,3" with "Hex" but it seems it is not working:

arrValues = Array(Hex)

这意味着它无法将Hex"解析为数组,因此我需要将其转换为数组,然后在上面的命令中使用它.你能告诉我我该怎么做?

It means it can not parse "Hex" as an array so I need to convert it into an array then use it in above command. Can you please tell me How can I do that?

这是我用来编写二进制值的脚本:

Here is the script I'm using to write a binary value:

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objRegistry = GetObject _
    ("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\DownloadManager\FoldersTree\Compressed"
strValueName = "pathW"
arrValues = Array(1,2,3)

errReturn = objRegistry.SetBinaryValue _
    (HKEY_CURRENT_USER, strKeyPath, strValueName, arrValues)

推荐答案

  1. Hex() 是一个函数,所以不应该有一个名为 Hex 的字符串.
  2. 使用 Split() 将字符串解析为 strings 的数组.
  3. 使用循环将十六进制/基数为 16 的字符串元素转换为数字.

在代码中:

>> WScript.Echo Hex(15)
>> s = "43,00,23,00,01,FF"
>> a = Split(s, ",")
>> WScript.Echo TypeName(a), TypeName(a(0)), Join(a, "-")
>> For i = 0 To UBound(a) : a(i) = CByte("&H" & a(i)) : Next
>> WScript.Echo TypeName(a), TypeName(a(0)), Join(a, "-")
>>
F
Variant() String 43-00-23-00-01-FF
Variant() Byte 67-0-35-0-1-255

(用于读取 arrValues)

(For a read arrValues)

更新对问题的评论/

所以你没有像我告诉你的那样去做:

So you didn't do it like I told you:

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set objRegistry = GetObject _
    ("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "TEMP"
strValueName = "pathW"
arrValues = Split("43,00,23,00,01,FF", ",")
For i = 0 To UBound(arrValues) : arrValues(i) = CByte("&H" & arrValues(i)) : Next

errReturn = objRegistry.SetBinaryValue _
    (HKEY_CURRENT_USER, strKeyPath, strValueName, arrValues)

这篇关于将十六进制字符串转换为数组并将其写入注册表 - VBSCript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆