Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将十六进制字符串转换为数组并将其写入注册表-VBSCript_Vbscript - Fatal编程技术网

将十六进制字符串转换为数组并将其写入注册表-VBSCript

将十六进制字符串转换为数组并将其写入注册表-VBSCript,vbscript,Vbscript,下面是一个名为“Hex”的字符串,其值如下: 43,00,23,00,01 现在我尝试将其写入二进制注册表项,为此,我需要使用以下命令: arrValues = Array(1,2,3) 我已将“1,2,3”替换为“Hex”,但它似乎不起作用: arrValues = Array(Hex) 这意味着它不能将“Hex”解析为数组,所以我需要将其转换为数组,然后在上面的命令中使用它。你能告诉我怎么做吗 下面是我用来编写二进制值的脚本: Const HKEY_CURRENT_USER = &am

下面是一个名为“Hex”的字符串,其值如下:

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

arrValues = Array(1,2,3)
我已将“1,2,3”替换为“Hex”,但它似乎不起作用:

arrValues = Array(Hex)
这意味着它不能将“Hex”解析为数组,所以我需要将其转换为数组,然后在上面的命令中使用它。你能告诉我怎么做吗

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

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)
  • Hex()是一个函数,所以不应该有一个名为Hex的字符串
  • 使用Split()将字符串解析为
    字符串数组
  • 使用循环将十六进制/基数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
    
    (对于读取值)

    更新问题的评论/编辑:

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

    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)
    

    Hex命名字符串只是一个例子,您的代码只针对一个预定义字符串,但我正在寻找一个函数,可以将十六进制字符串转换为数组,这样我就可以在arrValues=array(string)@陌生人-1中使用它们。我已经编辑了我的问题,现在您可以看到编写二进制值的整个脚本,使用脚本将字符串转换为数组,并在arrValues=array(string)中使用它将导致“Typemismatch”错误。对不起,我不是VBScriptor,我只在必要的情况下使用它。你的剧本很有魅力。谢谢你,伙计;)