Enumerar Claves del Registro

[¡¡Por fin un metodo sencillo!!]

 

Fecha: 29/Jul/2005 (26-07-05)
Autor: Pol Florez Viciana polflorez56@hotmail.com 

 

Buscando por las páginas del guille encontré un modulo de clase en el cual se podían enumerar las claves del registro de guindows, pero el caso es que este era tan extenso y engorroso de entender que decidí buscar otro método y aquí lo tenemos, un método sencillo, rápido y eficaz, pero eso si es necesario tener dos archivos en concreto que son: wshom.ocx y RegTool5.Dll

El método es bien sencillo y te lo muestro a continuación porque no hay mucho que explicar porque como veras es mas fácil de lo que parece.

Muestra de cómo funcionan sus funciones:

Option Explicit
' ********************************************************
' Metodo de enumeracion de Claves del Registro
' ¡¡¡¡¡¡¡¡¡¡¡POR FIN UN METODO SENCILLO!!!!!!!!!!!!!!!
'   Referencias:        Windows Script Host Object Model
'                       Registry Access Functions
'   Las dos Referencias son de Dll's Desarrolladas por
'   Microsoft
'
'                              Pol Florez Viciana 26-05-05
' ********************************************************

' Clave de Acceso de Ejemplo
Const LaClave As String = "SOFTWARE\Microsoft\Windows\CurrentVersion"

' Enumeracion de los Tipos de Registro posibles...
Private Enum RegTypes
    RegSZ = 0
    RegDWORD = 1
    RegBINARY = 2
    RegSZEXPAND = 3 ' Me Parece que este solo funciona en
                    ' guindows NT/2000/XP ...
End Enum


Private Sub Command1_Click()

Dim hKey As REGToolRootTypes
Dim Nombre As String, Valor As String
Dim Obj As New Registry
Dim L As Long

'Set Obj = New Registry

hKey = HKEY_LOCAL_MACHINE
If Obj.UpdateKey(hKey, LaClave, vbNullString, vbNullString) = True Then
   Do Until Obj.GetNextValue(hKey, LaClave, Nombre, Valor) = False
    List1.AddItem "-" & Nombre & Space(8) & " -" & Valor
    Nombre = "": Valor = ""
   Loop
End If

Set Obj = Nothing

End Sub

Private Function ReadKey(ByVal LaClave As String) As Variant
On Error Resume Next

Dim Obj As New WshShell

ReadKey = Obj.RegRead(LaClave)

Set Obj = Nothing

End Function

Private Function CreateKey(ByVal LaClave As String, Valor, TipoReg As RegTypes)
On Error Resume Next

Dim Obj As New WshShell
Dim RegTipo As String

Select Case TipoReg
Case RegSZ
RegTipo = "REG_SZ"
Case RegDWORD
RegTipo = "REG_DWORD"
Case RegBINARY
RegTipo = "REG_BINARY"
Case RegSZEXPAND
RegTipo = "REG_EXPAND_SZ"
End Select

Obj.RegWrite LaClave, Valor, RegTipo

Set Obj = Nothing

End Function

Private Function DeleteKey(ByVal LaClave As String)
On Error Resume Next

Dim Obj As New WshShell

Obj.RegDelete LaClave

Set Obj = Nothing

End Function

Ademas del codigo tambien adjunto las susodichas librerias para que las probeis.

Espero que esto le sirva a mas de uno...


Fichero con el código de ejemplo: PolFlo_Enumerar_Claves_del_Registro.zip 54,2 KB


ir al índice