ExcelVBAで レジストリの値の名前と種類を列挙する

レジストリの指定パス内にある名前と種類を列挙する

WMIというのを使う

Option Explicit

'WMIにて使用する各種オブジェクトを定義・生成する。
Dim oClass
Dim oLocator
Dim oService
Dim oRegName
Dim oRegType
Dim i
Dim sMesStr
Dim sTypeStr
Const HKEY_LOCAL_MACHINE = &H80000002

'ローカルコンピュータに接続する。
Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer(, "root\default")
'クエリー条件を WQL にて指定する。
Set oClass = oService.Get("StdRegProv")

oClass.EnumValues HKEY_LOCAL_MACHINE, _
"SOFTWARE\Microsoft\Windows NT\CurrentVersion", oRegName, oRegType

For i = 0 To Ubound(oRegName)

  Select Case oRegType(i)
  Case 1
  sTypeStr = "REG_SZ"
  Case 2
  sTypeStr = "REG_EXPAND_SZ"
  Case 3
  sTypeStr = "REG_BINARY"
  Case 4
  sTypeStr = "REG_DWORD"
  Case 7
  sTypeStr = "REG_MULTI_SZ"
  End Select

  sMesStr = sMesStr & oRegName(i) & " : " & sTypeStr & vbCrLf

Next

MsgBox "レジストリの値の名前と種類を列挙します。" & vbCrLf & vbCrLf & sMesStr

'使用した各種オブジェクトを後片付けする。
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing