2016-03-31 11 views
0

に読み込みます。Windowsレジストリ値をVBAの配列に読み込む必要があります。値はタイプREG_MULTI_SZです。Windowsレジストリ値を配列

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 

enter image description here

それは数0ない説明でエラーを返します。どんな手掛かり?

+1

"喜び" を定義していない。この

変更。間違いはありますか?不要な出力?全く出力がありませんか? 'arrValues'の実際のtpyeは何ですか? ( 'WScript.Echo TypeName(arrValues)') –

+0

@AnsgarWiechersこんにちは!更新された質問を見てください。ありがとうございました! –

+0

あなたは2つの条件に依存します。 'Err.Number'が0でも、まだ' Else'ブランチになったら、 'Return'が0でないことを意味するので、その値をチェックしてください。 –

答えて

2

あなたのスクリーンショットによると、あなたのキーは「ソース」ではなく「認証パッケージ」です。この中

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

strKeyPath = "SYSTEM\CurrentControlSet\Control\Lsa" 
strValueName = "Authentication Packages" 
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 
関連する問題