Publicidad

Leer-escribir y borrar del registry desde SQL Server


Por Alex el 28/06/2004 , Comentar el artículo

Comparte este artículo:        




Leer el registry desde SQL Server no es algo que normalmente hacemos pero siempre es bueno saber que lo podemos hacer. Para ésto se utilizan Extended Stored Procedures indocumentadas, así que no las encontrareis en los libros en pantalla.


Leer.

Para leer las claves del registry hay que ejecutar una Extended Stored Procedure no documentada de la base de datos Master, xp_regread:

EXECUTE xp_regread [@rootkey=]'rootkey',
[@key=]'key'
[, [@value_name=]'value_name']
[, [@value=]@value OUTPUT]

Por ejemplo si queremos leer la versión del SQL Server de la clave del registro HKEY_LOCAL_MACHINE\'SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup\CurrentVersion, CurrentVersion, la forma de utilizar el Extended Stored Procedure seria:

EXEC xp_regread 'HKEY_LOCAL_MACHINE',
'SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup\CurrentVersion',
'CurrentVersion'

Escribir. También podemos escribir en el registry utlizando la Extended Stored Procedure xp_regwrite:

EXECUTE xp_regwrite [@rootkey=]'rootkey',
[@key=]'key',
[@value_name=]'value_name',
[@type=]'type',
[@value=]'value'

Si por ejemplo quisiéramos escribir una nueva entrada llamada Prueba de tipo string y con el valor 'BOTELLA', en la clave anterior lo podríamos hacer de la siguiente forma:

EXECUTE xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup\CurrentVersion', 'PEPE', 'REG_SZ', 'BOTELLA'

Borrar xp_regdeletevalue, este Extended Stored Procedure permite borrar un valor de una determinada clave del registry,

EXECUTE xp_regdeletevalue [@rootkey=]'rootkey',
[@key=]'key',
[@value_name=]'value_name'

En nuestro ejemplo anterior hemos creado la clave PEPE, ahora para borrarla lo hariamos de la siguiente forma:

EXECUTE xp_regdeletevalue 'HKEY_LOCAL_MACHINE',
'SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup\CurrentVersion',
'PEPE'

Si queremos borrar todos los valores de una clave podemos utilizar xp_regdeletekey:

EXECUTE xp_regdeletekey [@rootkey=]'rootkey',
[@key=]'key'

Como ejemplo creamos una rama nueva dentro de ClientSetup que se llame 'Pruebas' y le ponemos un par de claves, para borrarla tendremos que ejecutar el Extended Stored Procedure de la siguiente forma:

EXECUTE xp_regdeletekey 'HKEY_LOCAL_MACHINE',
SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup\Pruebas'

Para poder ejecutar estas Extended Stored Procedure se puede hacer desde el Query Analizer pero el usuario que las utilice debe tener permisos para ejecutarlas sobre la base de datos Master.

Nota: Estos Extended Stored Procedures interactúan directamente con el registry, es conveniente no jugar con el registry porque podemos tener graves problemas y corromper el sistema por eso queda a vuestro riesgo el jugar con él.

Y esto es todo, feliz programming!!
Saludos
Alex


Si te ha gustado el artículo compartelo en:        


Publicidad


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.