5

サブフォルダーの値を含むレジストリ パスのすべての値を取得したいと考えています。今、私はこれで単一のフォルダの値を読みます:

const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

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

strKeyPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

For Each subkey In arrSubKeys
    msgbox subkey ' Just for debugging
Next

これはうまく機能しますが、さらに、フォルダーのサブフォルダーのリストを取得する必要があります。

次のコマンドのように、結果を取得したい(コンテンツのみが重要であり、フォーマットではなく、ファイルに書き込む必要はありません):

regedit /e c:\testfile.reg   
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

vbs でこれを行う方法はありますか、または Windows から Wscript.Shell 呼び出しで regedit コマンドを使用する必要がありますか。

4

2 に答える 2

10

サブキーに再帰する必要があります。これを試して:

Const HKEY_LOCAL_MACHINE = &H80000002
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

Sub EnumerateKeys(hive, key)
  WScript.Echo key
  reg.EnumKey hive, key, arrSubKeys
  If Not IsNull(arrSubKeys) Then
    For Each subkey In arrSubKeys
      EnumerateKeys hive, key & "\" & subkey
    Next
  End If
End Sub

Set reg = GetObject("winmgmts://./root/default:StdRegProv")

EnumerateKeys HKEY_LOCAL_MACHINE, strKeyPath
于 2013-08-07T09:12:05.387 に答える