cQueryReg (5) y gsRegEdit v3.0

Clase para manipular los datos del registro del Sistema y
utilidad que permite buscar y reemplazar valores del registro.

 

Revisión 5, del 28/Dic/2001


Para ver las revisiones anteriores, sigue estos links:
La clase original del 18/Ago/98 (1)
La revisión del 14/Oct/98 (2)
Este link te llevará a la revisión del 12/Jun/99 (3)
La revisión del 22/Jun/2000 (4)


A punto de acabar el año (espero publicarlo antes de que acabe), te traigo una nueva revisión de esta clase con funciones y otras cosillas útiles para manejar (o manipular) el registro del Sistema.
Está probada con las versiones definitivas de Windows 2000 y Windows XP Professional y funciona sin problemas; aunque tampoco lo he probado demasiado a fondo, lo poco que he probado, funciona sin problemas.
Pero no es eso por lo que he publicado esta nueva revisión. Sino porque he añadido algunas nuevas funciones y he probado con otras cosas... por ejemplo el tipo REG_EXPAND_SZ.

Aunque la verdadera razón, motivo por el que, a pesar del "EURO", he revisado esta clase, es por el proyecto o la utilidad que hasta ahora he estado usando para probar esta clase.
Dicha utilidad, ahora llamada gsRegEdit versión 3.0, tiene una utilidad, valga la redundancia, que espero que te pueda ser interesante y sobre todo muy útil: permite buscar y reemplazar valores del registro.

Con el RegEdit que traen los Windows, puedes buscar valores, pero con gsRegEdit además de buscar dentro del registro, puedes cambiar valores.
Y la verdad es que funciona de maravilla (por no decir de p*** madre, ya que puedo herir tus sentimientos... je, je... no todas las frases quieren decir lo que "textualmente" dicen)
A mi me ha sacado de un apuro... ya que se me "jodió" la unidad D, que es en la que estaban muchas de las utilidades que uso, (realmente todas las mías) y algún que otro programa, por ejemplo los compiladores de Borland, las versiones anteriores del Visual Basic (tengo instalada en esta máquina TODAS las versiones, desde la 1.0) y algunos compiladores de MS-DOS.
Pues eso... que tuve que restaurar lo que tenía en el disco D dentro de la unidad E y por tanto... o reinstalaba todo de nuevo o me "entretenía" con el RegEdit buscando D:\ y cambiándolo manualmente por E:\.
Y la verdad es que empecé haciéndolo manualmente, hasta que hoy me dio el "punto" de modificar el MiniRegEdit y hacer que buscara y reemplazara y aquí lo tienes... espero que lo disfrutes... (igual que yo he disfrutado al tener que evitarme el cambio de más de 5000 entradas del registro).

Por supuesto, además de estos cambios realizados hoy, la clase ya tenía algunas revisiones "menores", así que... también puede serte de bastante utilidad.

A continuación te relaciono esos cambios realizados desde el pasado 22 de Junio del año 2000 y también te muestro una "vista" del programa en ejecución, (con el look del Windows XP, que aunque aún tiene algunos fallillos, es bastante más estable que su hermano mayor el Windows 2000).

Las cosillas cambiadas y/o re-comprobadas son:

Revisión 0.15 (22/Nov/00) Todas las asignaciones de cadenas con String$(n,0) se sustituyen por String$(n,Chr$(0)), no altera nada pero es más evidente su función.
Revisión 0.16 (22/Nov/00) Los valores Binarios se formatean como Hexadecimales teniendo en cuenta las letras, no sólo los números. En lugar de usar Format$, uso Right$(...
Revisión 0.17 (23/Nov/00) En ParseKey se comprueba que la clave no acabe en \
Revisión 0.18 (23/Nov/00) En EnumValues se añade el valor de Default
Revisión 0.19 (09/Feb/01) Nuevas comprobaciones al leer los datos.
Revisión 0.20 (19/May/01) Corrección de un bug al usar "open" en AsociarExt
Revisión 0.21 (19/May/01) Nuevo método: AsociarIcono
Revisión 0.22 (26/May/01) Nueva propiedad de sólo lectura: UserName
Revisión 0.23 (28/Dic/01) Nuevas propiedades y algunos cambios:
GetRegType para saber el tipo de datos
EnumValuesByType, enumera valores sólo del tipo indicado
DeleteValue, borrar un valor, antes se hacía con DeleteKey
Cambios en GetRegString y SetReg para usar el tipo REG_EXPAND_SZ

 


 


La utilidad gsRegEdit v3.00:


Lo del valor "no mostrado" de ProductId es porque yo lo he quitado, en tu equipo si te mostrará el valor.

 


No muestro el código de la clase, ya que los cambios no han sido tan grandes, y como en el fichero zip está todo el código, puedes verlo cuando quieras e incluso compararlo con las versiones anteriores.
Lo que si te voy a mostrar es el código de la utilidad que se encarga de buscar y reemplazar en el registro.
Sobre todo fíjate en el comentario del procedimiento BuscarClaves, ya que, a lo mejor, te puede ayuda a entender o comprender mejor los procedimientos recursivos y cómo poder aprovecharse de esa recursividad.
Aunque esto de la recursividad también tiene sus inconvenientes, por ejemplo que se "recurra" demasiado y acabes sin "pila"... pero eso es algo que está fuera de esta utilidad y en caso de que ocurra, sobre todo con la clave HKEY_LOCAL_MACHINE, será cuestión de que no uses la clave raíz, sino que utilices cada una de las ramas principales... es que a mi me ha ocurrido... por eso te lo digo y advierto.
Aunque creo que ya está arreglado ese fallillo... si te ocurre... no me eches la culpa... ¿vale?
Normalmente cuando se vende u ofrece un software, se suele aclarar que "el autor" no se hace responsable de las pérdidas que se puedan sufrir por el uso del programa y en este tipo de utilidades habría que ponerlo bien grande y con letras rojas, (más grande de lo que acabo de ponerlo), para que se vea... que eso de jugar con el registro del sistema es algo peligroso... sobre todo ahora que esta utilidad te permite "reemplazar" automáticamente... en fin... si lo pruebas, verás que avisar, aviso... para que nadie se pueda quejar.

De todas formas, no quiero quitarte la ilusión, y te diré que funcionar, funciona, pero no se te ocurra hacer cambios que puedan tener unos valores que no sean únicos, por ejemplo en mi caso no cambié todas las D: por E: ya que el Windows usa sus propios valores para saber cómo manejar la unidad D, (porque, en mi caso, el que no tenga ya los programas en ella, no quiere decir que no exista esa unidad).
Por tanto te recomiendo que cambies cosas en las que no haya dudas de que los valores son únicos, por ejemplo si cambio D:\gsCodigo por E:\gsCodigo, sé que me estoy refiriendo a un directorio de una unidad y no creo que pueda haber nada que se malogre al hacer ese cambio... salvo que tenga datos en D:\gsCodigo... ¡por supuesto!, pero entonces ¿para que cambiarlo?

No me enrollo más, que ya está bien por hoy... ah, por cierto, no es una inocentada... ¡que conste!
(por si no estás al tanto... el 28 de Diciembre es el día de los inocentes y se suelen gastar "inocentadas")


Como es muy tarde y no he dormido todavía, (entre otras cosas, esperando a que vinieran a recoger los datos del padrón), no voy a poner ningún código... que ya está bien por hoy.

¡Que lo disfrutes!

Nos vemos.
Guillermo

 

Pulsa este link para bajarte los listados y el ejecutable de la utilidad gsRegEdit v3.0. (gsRegEdit_v3.zip 55.3 KB)


ir al índice