24/12Editar el Registro con VBScript

Tras buscar información para mi entrada anterior, voy a escribir una breve entrada con lo necesario para poder leer y editar el registro de Windows mediante VBScript.

Los tres objetos que vamos a usar son RegRead, RegWrite y RegDelete.
En relación a la sintaxis a usar para la ruta del registro que queremos modificar tenemos que tener en cuenta:

Podemos abreviar las ramas del registro:

  • HKEY_CURRENT_USER > HKCU
  • HKEY_LOCAL_MACHINE > HKLM
  • HKEY_CLASSES_ROOT > HKCR
  • HKEY_USERS > HKCU > HKEY_USERS
  • HKEY_CURRENT_CONFIG > HKEY_CURRENT_CONFIG

Dependiendo de si terminamos la ruta con o sin barra invertida “" estaremos referenciando a la rama (o su valor por defecto) o al nombre de un valor:

  • “HKCU\Control Panel\Desktop" se referirá a la rama “Desktop” o su valor por defecto.
  • “HKCU\Control Panel\Desktop\Wallpaper” se referirá al valor de la variable “Wallpaper” dentro de la rama “Desktop”

Registro de Windows

También conviene repasar los distintos tipos de datos que puede contener el registro:

  • REG_SZ: una cadena de tipo String
  • REG_DWORD: un valor numérico de tipo entero
  • REG_BINARY: un valor de tipo binario
  • REG_EXPAND_SZ: una cadena de tipo string
  • REG_MULTI_SZ: una matriz de cadenas

Para probar cualquiera de los ejemplos siguientes, puedes crear un nuevo archivo con extensión .vb [p.e: pruebas_registro.vb] y abrirlo con el Bloc de notas para copiar el contenido.

Leer datos del registro:

Vamos a ver un ejemplo para recuperar la ruta de la imagen que tenemos como escritorio:

Visual Basic:
  1. ‘Definimos y creamos el objeto que usaremos para trabajar con el registro:
  2. Dim oReg As Object
  3. Set oReg = CreateObject(“Wscript.Shell”)
  4.  
  5. ‘Definimos las variables necesarias
  6. Dim strClave As String
  7.  
  8. ‘Guardamos en la variable el valor de la clave
  9. strClave = oReg.RegRead(“HKCU\Control Panel\Desktop\Wallpaper”)
  10.  
  11. ‘Mostramos en un mensaje el valor de la clave
  12. MsgBox strClave
  13.  
  14. ‘Destruimos la variable de objeto
  15. Set oReg = Nothing

Eliminar datos del registro:

Si quisieramos eliminar esa clave del registro, sería tan sencillo como pasar la ruta completa como parámetro. Te recomiendo hacer una copia de seguridad de la rama del registro en la que vayas a realizar pruebas antes de ponerte a ello.

Visual Basic:
  1. ‘Definimos y creamos el objeto que usaremos para trabajar con el registro:
  2. Dim oReg As Object
  3. Set oReg = CreateObject(“Wscript.Shell”)
  4.  
  5. ‘Eliminamos la clave del registro
  6. oReg.RegDelete(“HKCU\Control Panel\Desktop\Wallpaper”)
  7.  
  8. ‘Destruimos la variable de objeto
  9. Set oReg = Nothing

Crear y modificar datos del registro:

A la hora de escribir claves en el registro tenemos que tener en cuenta el tipo de dato que vamos a almacenar.
Como ejemplo, cambiaremos la ruta de la imagen del escritorio definida:

Visual Basic:
  1. ‘Definimos y creamos el objeto que usaremos para trabajar con el registro:
  2. Dim oReg As Object
  3. Set oReg = CreateObject(“Wscript.Shell”)
  4.  
  5. ‘Definimos las variables necesarias
  6. Dim strRuta As String
  7. strRuta = “C:\fondo.jpg”
  8.  
  9. ‘Escribimos el nuevo valor de la clave
  10. oReg.RegWrite “HKCU\Control Panel\Desktop\Wallpaper”, strRuta, “REG_SZ”
  11.  
  12. ‘Destruimos la variable de objeto
  13. Set oReg = Nothing

Editar el Registro de Windows con VBScript - Ejemplos
Tam: 1,1 Kb

comentarios

  1. y como puedo introducir un valor binario (ejemp: “00 00 00 00” en una clave del registro del tipo: Reg_Binary ?

    responder »

    jack

    21/01/08 @ 20:21

    comentarios recientes

  2. @jack: en esta entrada te resuelvo la duda. saludos!

    responder »

    hanok

    21/01/08 @ 23:50

    comentarios recientes

  3. Hola HNK, no tengo idea de VB, me podrias decir como podria poner uno de estos codigos en un archivo vbs para que funcione, o con que hacerlo?

    Muchas gracias

    responder »

    Lucas

    10/04/08 @ 20:47

    comentarios recientes

  4. @Lucas: he actualizado la entrada añadiendo un archivo comprimido con los tres ejemplos en ficheros VBS separados. Para editarlos basta con usar el Bloc de Notas. Saludos.

    responder »

    hanok

    10/04/08 @ 21:13

    comentarios recientes

  5. @hanok: Gracias. Pero sigue sin funcionarme, ya ves que no tengo mucha idea. Creia que iba a funcionar directamente como otros archivos vbs.

    responder »

    Lucas

    12/04/08 @ 8:39

    comentarios recientes

  6. Escribir Tipos Binarios en el Registro con VB | HNKweb 1 | 21/01/08 @ 23:48

    […] del comentario de Jack en mi última entrada sobre la lectura/escritura del registro de Windows usando VBScript, me puse a […]

deja tu respuesta