2012-01-12 9 views
0

レジストリのtherは値である(Default)の値を持つキーです。このデフォルトのエントリには、必要な値があります。私は、レジストリ値を読み取るスクリプトを見つけました。VBScriptのレジストリから(デフォルト)値を読み取る方法は?

const HKEY_LOCAL_MACHINE = &H80000002 
const RegistryLocation = "SOFTWARE\SAP BusinessObjects\Suite XI 4.0\Xcelsius\Keycodes" 

ReadRegistry(RegistryLocation) 

Function ReadRegistry(RegistryLocation) 

strComputer = "." 

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 

oReg.EnumValues HKEY_LOCAL_MACHINE, RegistryLocation, arrValueNames, arrValueTypes 

    Wscript.Echo "Key Name: " & arrValueNames(0) 
'RegKeyName = arrValueNames(0) 

oReg.GetStringValue HKEY_LOCAL_MACHINE, RegistryLocation, arrValueNames(0), strValue 
Wscript.Echo "Value: " & strValue 
'RegKeyValue = strValue 

'ChangeRegistryValue RegistryLocation, arrValueNames(i), NewSerial 

End Function 'ReadRegistry 

さらに多くのキーがある場合は問題ありません。 (デフォルト)値だけが存在する場合は、タイプミスマッチエラーが発生します。新しい鍵を作成すると、デフォルトのエントリ値を読み取ることができます。

私の質問は、私が間違っていることです。どうすればいいですか?

ありがとうございます!

答えて

0

空の名前の値が1つしかない場合、VBScriptにはValueNamesの配列を取得する際に問題があるようです。あなたが値の名前を列挙せずにデフォルト値を読み取ることができます - ちょうど値の名前として空の文字列を供給:

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 
oReg.GetStringValue HKEY_LOCAL_MACHINE, RegistryLocation, "", strValue 
Wscript.Echo "Value: " & strValue 

それは両方のケースで動作します:インクルードは、複数の値が与えられたキーの下にあるときに、デフォルト値は唯一の値である場合には。

+0

ありがとうございました! – kampi

関連する問題