Enumerar Claves del Registro[¡¡Por fin un metodo sencillo!!]
Fecha: 29/Jul/2005 (26-07-05)
|
|
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 FunctionAdemas 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