Sección de tutoriales y manuales vb
Guía que explica los aspectos básicos de como usar Windows Script Host para poder acceder al registro, ya sea para leer , modificar, crear o eliminar datos, claves y valores del mismo
Para tener un control total sobre la manipulación del registro, hay que utilizar las funciones Api para el registro (RegCloseKey, RegCreateKey, RegDeleteKey, RegQueryValue etc...), pero utilizando este modelo de objetos se pueden realizar las operaciones comunes sobre el mismo, sobre todo si no estamos muy acostumbrados a manejar el Api, ya que es mas fácil
Windows Script Host posee 3 principales métodos que permiten leer, escribir y eliminar valores. Estos son:
Hay que comentar también que mediante WSH se pueden
hacer otras muchas operaciones, pero aquí solo solo se ven las relacionadas
al registro.
Para poder acceder a dichos métodos es necesario crear mediante automatización,
con CreateObject, un objeto de tipo wscript.Shell.
También se puede incluir la referencia Windows Scripting Host desde
el menú de referencias de vb:
una ves agregada podemos acceder declarando la variable de esta forma:
Dim Objeto As WshShell
Esta captura muestra la lista de objetos a los que podemos acceder una ves declarada la variable WshShell
Para crear la variable mediante automatización, se hace mediante
CreateObject, especificando que vamos a crear un objeto
de tipo "Wscript.Shell". Luego ya podemos utilizar los métodos
mediante el objeto que acabamos de crear. Por último cuando no se
necesita utilizar mas ese objeto, lo eliminamos con la sentencia Nothing.
Ejemplo:
'Variable de objeto
Dim MiObjeto As Object
'Creamos el objeto
Set MiObjeto = CreateObject("Wscript.Shell")
'Lo usamos, en este caso leemos una clave y mostramos el
valor
MsgBox MiObjeto.RegRead("RamaDelRegistro que vamos a leer")
'Eliminamos la variable
Set MiObjeto = Nothing
Otra detalle. Para abreviar las ramas del registro podemos utilizar lo siguiente:
Como sabemos el registro puede contener los siguientes tipos de datos:
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
A continuación un ejemplo para leer un valor de tipo String del registro, especificamente vamos a leer el valor de la rama:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
En Xp esta clave tiene una subclave entre otras llamada: "WallPaperDir",
que contiene el path o ruta donde se especifican los fondos de escritorio
de Windows:
'creamos una variable para usar el
método RegRead
Dim MiObjeto As Object
'Creamos el objeto
Set MiObjeto = CreateObject("Wscript.Shell")
'Mostramos mediante un Msgbox el valor del dato "WallPaperDir"
que tiene la ruta antes mencionada
MsgBox MiObjeto.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WallPaperDir")
'Eliminamos la variable de objeto
Set MiObjeto = Nothing
Por ejemplo si quisieramos almacenar el valor devuelto deberíamos crear una variable de tipo String
Dim Valor As String
Valor = MiObjeto.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WallPaperDir")
Nota: Si no conocemos el valor que vamos a obtener, podemos declarar a la variable que almacenará el dato como de tipo Variant.
Otra cosa importante es que en el parámetro de RegRead donde especificamos la rama a leer, no debe terminar con la barra "\" ya que daría un error
Para eliminar una rama, clave, dato o valor es muy simple, solo tenemos
que especificar la ruta completa en el parámetro:
Nota importante: Antes de probar hacer un backup de la
rama para poder restaurarla por si las moscas.
Para hacer un backup de la rama o clave hay que posicionarse en ella, con
el botón derecho elegir Exportar clave o rama y
elegir una ubicación donde se generará un archivo
.Reg para poder restaurar dicha clave. Al darle dobleclik se restaurará
la clave al registro preguntando anteriormente si se desea restaurar dichos
valores.
Siguiendo. El ejemplo anterior, para eliminar la clave "WallPaperDir",
lo haríamos asi:
'Variable de objeto
Dim MiObjeto As Object
'Seteamos la variable anterior para poder usarla para eliminar
la clave
Set MiObjeto = CreateObject("Wscript.Shell")
'Eliminamos la clave WallPaperDir
MiObjeto.RegDelete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WallPaperDir"
'Eliminamos la variable de objeto
Set MiObjeto = Nothing
Para crear un valor, dato o clave, pongamos un ejemplo simple de como grabar
en la rama
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
que es la que tiene los path de las aplicaciones que se inician cuando arranca
Windows, es decir poder poner nuestra aplicación.
Dentro de Run hay que crear un dato, en este caso le ponemos el nombre de
nuestro Proyecto mediante App.ExeName, y dentro de esta clave le debemos
especificar la ruta de nuestro ejecutable: Para eso el método RegWrite
tiene 3 parámetros
RegWrite Rama, elValoraGrabar, ElTipodeDato
El tipo de dato puede ser un (String, Entero, binario etc..)
En este caso como la ruta es un String no es necesario especificar el tipo
de dato, solo el valor y la Rama:
Ejemplo:
'Variable para el nombre de nuestro
Exe
Dim NuestroPrograma As String
'variable para la Ruta de nuestra aplicación
Dim Ruta As String
'Variable de objeto
Dim MiObjeto As Object
'Seteamos la variable y creamos la referencia
Set MiObjeto = CreateObject("Wscript.Shell")
NuestroPrograma = App.EXEName
Ruta = App.Path & "\" & App.EXEName & ".exe"
'Escribimos el valor en el registro
MiObjeto.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
& NuestroPrograma, Ruta
'Eliminamos la variable
Set MiObjeto = Nothing
Por último hay que tener en cuenta que si creamos un dato de tipo Dword (un Entero), y le grabamos un String o un valor Binario, obviamente va a saltar el conocido error número 13 "No coinciden los tipos".
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar