Remote Registry Listing?

Anything VBScript-related, including Windows Script Host, WMI, ADSI, and more.
Forum rules
Do not post any licensing information in this forum.

Any code longer than three lines should be added as code using the 'Select Code' dropdown menu or attached as a file.
This topic is 16 years and 10 months old and has exceeded the time allowed for comments. Please begin a new topic or use the search feature to find a similar but newer topic.
Locked
User avatar
newguy79
Posts: 9
Last visit: Thu Jun 14, 2007 1:38 am

Remote Registry Listing?

Post by newguy79 »

Hi everyone. I am new here and I need some help in finding out how to list remote registry subfolders. I can open a connection, retrieve specific data values. The only thing that I need is to list folders that are dynamic so I can use the folder names to retrieve the data.
Thanks in advance.

Set m_objectLocator = CreateObject("WbemScripting.SWbemLocator") Set m_objectServices = m_objectLocator.ConnectServer(serverIpAddress, registryDirectory, userName, password) If IsError("ConnectServer", err) Then reporter.ReportEvent micFail, "RegistryExtractor:: OpenConnection()!", "RegistryExtractor failed" OpenConnection = False Exit Function End If
' Obtains a registry provider object Set m_objectRegistry = m_objectServices.Get("StdRegProv") If IsError("Get StdRegProv", err) Then reporter.ReportEvent micFail, "RegistryExtractor:: OpenConnection()!", "RegistryExtractor failed" OpenConnection = False Exit Function End If

'First we need to determine the valueName data type by retrieveing all the registry key names and types returnError = m_objectRegistry.EnumValues(hKeyClassType, registryPath, registryNames, registryTypes) If IsError("EnumValues", err) Or returnError <> 0 Then reporter.ReportEvent micFail, "RegistryExtractor:: GetSetDataFromRegistry()", "Registry failed to EnumValue()" GetSetDataFromRegistry = False Exit Function End If
' List the Names and Data Types in the registry path For i = LBound(registryTypes) To UBound(registryTypes)
MsgBox "Registry Name = " & registryNames(i) & " value = " & extractData, 65, "MsgBox Example" If StrComp(registryKeyName, registryNames(i)) = 0 Then
If GetSetRegistryValue(hKeyClassType, registryPath, registryKeyName, REGISTRY_DATA_TYPES(registryTypes(i)), registryValue, extractData) then GetSetDataFromRegistry = True Exit Function End If End If Next
Private Function GetSetRegistryValue(ByVal hKeyClassType, ByVal registryPath, ByVal registryKeyName, ByVal registryDataType, ByRef registryValue, ByVal extractData)
Dim E 'Determine the correct function to call from the Registry for the correct Data Type Select Case registryDataType
Case "REG_SZ "
If extractData Then E = m_objectRegistry.GetStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If Case "REG_MULTI_SZ "
If extractData Then E = m_objectRegistry.GetMultiStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetMultiStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If
Case "REG_EXPAND_SZ "
If extractData Then E = m_objectRegistry.GetExpandedStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetExpandedStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If Case "REG_BINARY "
If extractData Then E = m_objectRegistry.GetBinaryValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetBinaryValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If Case "REG_DWORD "
If extractData Then E = m_objectRegistry.GetDWORDValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetDWORDValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If
Case "REG_QWORD "
If extractData Then E = m_objectRegistry.GetQWORDValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetQWORDValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If
' Unsupported cases' Case " "' Case "REG_DWORD_BIG_ENDIAN "' Case "REG_LINK "'' Case "REG_RESOURCE_LIST "' Case "REG_FULL_RESOURCE_DESCRIPTOR "' Case "REG_RESOURCE_REQUIREMENTS_LIST" Case Else Print "Registry data type " & registryDataType & " is not supported." reporter.ReportEvent micWarning, "RegistryExtractor:: GetSetRegistryValue()", "Registry data type " & registryDataType & " is not supported." GetSetRegistryValue = False Exit Function End Select
GetSetRegistryValue = True End Function
User avatar
newguy79
Posts: 9
Last visit: Thu Jun 14, 2007 1:38 am

Remote Registry Listing?

Post by newguy79 »

Hi everyone. I am new here and I need some help in finding out how to list remote registry subfolders. I can open a connection, retrieve specific data values. The only thing that I need is to list folders that are dynamic so I can use the folder names to retrieve the data.
Thanks in advance.

Set m_objectLocator = CreateObject("WbemScripting.SWbemLocator") Set m_objectServices = m_objectLocator.ConnectServer(serverIpAddress, registryDirectory, userName, password) If IsError("ConnectServer", err) Then reporter.ReportEvent micFail, "RegistryExtractor:: OpenConnection()!", "RegistryExtractor failed" OpenConnection = False Exit Function End If
' Obtains a registry provider object Set m_objectRegistry = m_objectServices.Get("StdRegProv") If IsError("Get StdRegProv", err) Then reporter.ReportEvent micFail, "RegistryExtractor:: OpenConnection()!", "RegistryExtractor failed" OpenConnection = False Exit Function End If

'First we need to determine the valueName data type by retrieveing all the registry key names and types returnError = m_objectRegistry.EnumValues(hKeyClassType, registryPath, registryNames, registryTypes) If IsError("EnumValues", err) Or returnError <> 0 Then reporter.ReportEvent micFail, "RegistryExtractor:: GetSetDataFromRegistry()", "Registry failed to EnumValue()" GetSetDataFromRegistry = False Exit Function End If
' List the Names and Data Types in the registry path For i = LBound(registryTypes) To UBound(registryTypes)
MsgBox "Registry Name = " & registryNames(i) & " value = " & extractData, 65, "MsgBox Example" If StrComp(registryKeyName, registryNames(i)) = 0 Then
If GetSetRegistryValue(hKeyClassType, registryPath, registryKeyName, REGISTRY_DATA_TYPES(registryTypes(i)), registryValue, extractData) then GetSetDataFromRegistry = True Exit Function End If End If Next
Private Function GetSetRegistryValue(ByVal hKeyClassType, ByVal registryPath, ByVal registryKeyName, ByVal registryDataType, ByRef registryValue, ByVal extractData)
Dim E 'Determine the correct function to call from the Registry for the correct Data Type Select Case registryDataType
Case "REG_SZ "
If extractData Then E = m_objectRegistry.GetStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If Case "REG_MULTI_SZ "
If extractData Then E = m_objectRegistry.GetMultiStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetMultiStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If
Case "REG_EXPAND_SZ "
If extractData Then E = m_objectRegistry.GetExpandedStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetExpandedStringValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If Case "REG_BINARY "
If extractData Then E = m_objectRegistry.GetBinaryValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetBinaryValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If Case "REG_DWORD "
If extractData Then E = m_objectRegistry.GetDWORDValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetDWORDValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If
Case "REG_QWORD "
If extractData Then E = m_objectRegistry.GetQWORDValue(hKeyClassType, registryPath, registryKeyName, registryValue) Else E = m_objectRegistry.SetQWORDValue(hKeyClassType, registryPath, registryKeyName, registryValue) End If
' Unsupported cases' Case " "' Case "REG_DWORD_BIG_ENDIAN "' Case "REG_LINK "'' Case "REG_RESOURCE_LIST "' Case "REG_FULL_RESOURCE_DESCRIPTOR "' Case "REG_RESOURCE_REQUIREMENTS_LIST" Case Else Print "Registry data type " & registryDataType & " is not supported." reporter.ReportEvent micWarning, "RegistryExtractor:: GetSetRegistryValue()", "Registry data type " & registryDataType & " is not supported." GetSetRegistryValue = False Exit Function End Select
GetSetRegistryValue = True End Function
jvierra
Posts: 15439
Last visit: Tue Nov 21, 2023 6:37 pm
Answers: 30
Has voted: 4 times
Been upvoted: 33 times

Remote Registry Listing?

Post by jvierra »

Use EnumKeys to get the subkeys of a key.
User avatar
newguy79
Posts: 9
Last visit: Thu Jun 14, 2007 1:38 am

Remote Registry Listing?

Post by newguy79 »

Where can I find out the documentation on the EnumKeys function?
This topic is 16 years and 10 months old and has exceeded the time allowed for comments. Please begin a new topic or use the search feature to find a similar but newer topic.
Locked