Vbscript 将Windows注册表值读入数组

Vbscript 将Windows注册表值读入数组,vbscript,windows-7,Vbscript,Windows 7,我必须将Windows注册表值读入VBA中的数组。值的类型为REG\u MULTI\u SZ Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\default:StdRegProv") strKe

我必须将Windows注册表值读入VBA中的数组。值的类型为
REG\u MULTI\u SZ

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
             strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa\Authentication Packages"
strValueName = "Sources"
Return = objReg.GetMultiStringValue(HKEY_LOCAL_MACHINE, strKeyPath, _
         strValueName, arrValues)
If (Return = 0) And (Err.Number = 0) Then   
    'Treat the multistring value as a collection of strings 
    'separated by spaces and output
    For Each strValue In arrValues
        WScript.Echo  strValue
    Next
Else
    WScript.Echo "GetMultiStringValue failed. Error = " & Err.Number
End If


它给出了一个编号为0的错误,并且没有描述。有什么线索吗?

这只是个简单的错误。工作代码在这里

const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."

Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"& strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa"
strValueName = "Authentication Packages"

Return = objReg.GetMultiStringValue(HKEY_LOCAL_MACHINE,strKeyPath, strValueName,arrValues)
 WScript.Echo  "GetMultiStringValue. Return = " & Return

    If (Return = 0) And (Err.Number = 0) Then   
' Treat the multistring value as a collection of strings 
'    separated by spaces and output
    For Each strValue In arrValues
    WScript.Echo  strValue
Next
Else
    Wscript.Echo "GetMultiStringValue failed. Error = " & Err.Number
End If

这是一个简单的错误。工作代码在这里

const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."

Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"& strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa"
strValueName = "Authentication Packages"

Return = objReg.GetMultiStringValue(HKEY_LOCAL_MACHINE,strKeyPath, strValueName,arrValues)
 WScript.Echo  "GetMultiStringValue. Return = " & Return

    If (Return = 0) And (Err.Number = 0) Then   
' Treat the multistring value as a collection of strings 
'    separated by spaces and output
    For Each strValue In arrValues
    WScript.Echo  strValue
Next
Else
    Wscript.Echo "GetMultiStringValue failed. Error = " & Err.Number
End If

根据您的截图,您的密钥是“身份验证包”,而不是“来源”

更改此项:

strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa\Authentication Packages"
strValueName = "Sources"
为此:

strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa"
strValueName = "Authentication Packages"

根据您的截图,您的密钥是“身份验证包”,而不是“来源”

更改此项:

strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa\Authentication Packages"
strValueName = "Sources"
为此:

strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa"
strValueName = "Authentication Packages"

定义“没有快乐”。你有错误吗?不需要的输出?根本没有输出?
arrValues
的实际tpye是多少?(
WScript.Echo TypeName(arrValues)
)@AnsgarWiechers-Hi!请看更新的问题。非常感谢。你取决于两个条件。如果
Err.Number
为0,但您仍然可以访问
Else
分支,这意味着
Return
不是0,因此请检查该值。定义“无欢乐”。你有错误吗?不需要的输出?根本没有输出?
arrValues
的实际tpye是多少?(
WScript.Echo TypeName(arrValues)
)@AnsgarWiechers-Hi!请看更新的问题。非常感谢。你取决于两个条件。如果
Err.Number
为0,但仍然到达
Else
分支,则表示
Return
不是0,因此请检查该值。