[VBS] レジストリのキー一覧を取得する方法

レジストリのあるキーに含まれるサブキーをすべて取得する方法をご紹介します。

以下の画像のように、「sample」というキーの中に
「test1~test3」までが入っています。

この「test1~test3」までをすべて取得する方法をご紹介します。

以下のコードでできます。

Dim Locator, Service, Reg
Dim Shell
Dim SubKeySet, SubKey
Dim strKeys, strVals

Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer(vbNullString, "root\default")
Set Reg = Service.Get("StdRegProv")
Const HKEY_CURRENT_USER = &H80000001
Const TARGETKEY = "Software\sample"

Set Shell = createobject("WScript.Shell")
Const S_HKEY_CURRENT_USER = "HKEY_CURRENT_USER\"

' サブキーを全て取得する
Reg.EnumKey HKEY_CURRENT_USER, TARGETKEY, SubKeySet

for each SubKey in SubKeySet
    ' サブキーを文字列にする
    strKeys = strKeys & SubKey & vbCrLf
    ' サブキーの値を取得する
    strVals = strVals & Shell.regRead(S_HKEY_CURRENT_USER & TARGETKEY & "\" & SubKey & "\") & vbCrLf
next

WScript.Echo strKeys 
WScript.Echo strVals

結果は以下のようになります。
キーと規定値を取得できました。

キーの値を取得する「regRead」(コードの22行目)については、以下のページを参照してください。

以下のサイトを参考にしました。