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
Remote Registry Listing?
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.
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.
Remote Registry Listing?
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
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