PDA

Ver la Versión Completa : trabajo con el registro de windows


diego007
10-12-2009, 04:41:21
Tola Amigos, soy nuevo en esto de programar en Delphi (es un nuevo capitulo de la Unversidad) y tengo el siguiete problema, tengo que hacer que un programa que al iniciar el sistema saque una imagen del registro, despues de unos minutos ejecuto algun programa X, despues de esto saco una nueva imagen del registro y me tiene que mostara las modificaciones en el (deben ser: creacion de nuvas adenas, eliminacion de cadenas y modificaciones de cadenas existentes) e buscado en internet y solo muestran como crear cadenas, pero no muestran como podria sacar solo los 3 parametros indicados. Alguien que tenga alguna idea de como hacer eso, please help

Neftali [Germán.Estévez]
10-12-2009, 10:07:09
Supongo que los más fácil en este caso es sacar una copia del registro al principio, sacar otra copia del registro al final y luego mostrar las diferencias.

Sabrás que hay un programa en windows que permite trabajar con el registro llamado RegEdit. Este programa permite trabajar desde la línea de comandos con parámetros. Si lo llamas de la siguiente forma:

> REGEDIT /e c:\copiareg.reg

Obtendrás una copia del registro en ese fichero.
Una vez que tengas ambas copias puedes compararlas e intentar extraer diferencias.

Otra opción es no utlizar REGEDIT y usar la clase TRegistry que viene con Delphi. Con ella puedes acceder al registro y realizar TODAS las operaciones que necesites. En tu caso, sería recorrer todas las claves y guardarlas en algun fichero. Si lo realizas al principio y al final, luego tendrás que hacer lo mismo que antes. Comporarlas y extraer diferencias.

cocute
10-12-2009, 11:28:31
por cierto por curiosidad he leido el post y me ha dado por ejecutar el
REGEDIT /e c:\copiareg.reg

y mi fichero de registro en Windows7 64 ocupa 300mb
es normal eso? como para comparar linea por linea ¿no?

Aunque no creo que te dejasen si es para una práctica, para comparar ficheros podrias hacerlo tambien desde la linea de comandos:
comp registroantes.reg registrodespues.reg >cambios.txt

Syntax

Compares the contents of two files or sets of files.

COMP [data2] [/A] [/L] [/N=number] [/C]

data1 Specifies location and name(s) of first file(s) to compare.
data2 Specifies location and name(s) of second files to compare.
/D Displays differences in decimal format.
/A Displays differences in ASCII characters.
/L Displays line numbers for differences.
/N=number Compares only the first specified number of lines in each file.
/C Disregards case of ASCII letters when comparing files



Aunque tampoco creo que te sirva utilizar librerias de terceros, ya que me imagino que tendras que entregar el código
tambien puedes mirar esto, que es freeware e incluye ejemplos, mejor que esto no encontrarás:
http://www.angusj.com/delphi/textdiff.html
http://www.angusj.com/delphi/textdiff1.png

Neftali [Germán.Estévez]
10-12-2009, 12:01:04
A mi también me ha llamado la atención el tamaño del archivo generado.
En mi caso es de 114 Mg.
He probado a exportar el registro desde el RegEdit y me ha ocupado prácticamente la mitad. Revisando un poco veo que la exportación desde la línea de comandos (al menos tal y como la hemos visto antes) se realiza utilizando UNICODE, de ahí que ocupe el doble que la otra, que se hace con la codificación normal.