PDA

Ver la Versión Completa : leer una veriable del Regedit de windows con Delphi


afarenas
25-09-2006, 22:18:33
compañeros:
Necesito leer una variable del regedit de windows, alguien
me podria indicar como hacer esto en Delphi.
Gracias.

roman
25-09-2006, 22:22:50
Usa la clase TRegEdit. Para más información busca en la ayuda de Delphi o en estos mismos foros.

// Saludos

jachguate
25-09-2006, 23:00:17
Hola. Supongo que roman se refiere a la clase TRegistry. ¿cierto?

Saludos :p

roman
25-09-2006, 23:01:45
Muy cierto :o

// Saludos

afarenas
26-09-2006, 01:07:38
Estuve tratando con esa clase pero no pude hacerla funcionar, no se como
mire el ejemplo que trae la ayuda de delphi y tampoco me funcionó,
podria alguno colaborarme con algun ejemplo?

jachguate
26-09-2006, 01:36:45
Allí te va:


uses registry;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
if reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU', False) then
ShowMessage('El último comando ejecutar de este usuario fue: ' + reg.ReadString('a'));
finally
reg.Free;
end;
end;


Hasta luego.

;)

seoane
26-09-2006, 01:47:36
Yo solo añadiria dos cosas:


with TRegistry.Create do
try
RootKey:= HKEY_CURRENT_USER; // <-- La clave root
if OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU',FALSE) then
begin
ShowMessage('El último comando ejecutar de este usuario fue: ' + ReadString('a'));
CloseKey; // Y cerrar al salir, solo por educacion jejeje
end;
finally
Free;
end;


La verdad es que en el caso anterior se podía omitir la Rootkey ya que por defecto es HKEY_CURRENT_USER pero por si es otra diferente ahí queda el dato.

jachguate
26-09-2006, 01:53:37
La verdad es que en el caso anterior se podía omitir la Rootkey ya que por defecto es HKEY_CURRENT_USER pero por si es otra diferente ahí queda el dato.

Efectivamente, la raiz por defecto es HKCU, por eso la omití. Tené por seguro que al destruir el objeto, la llave también se cerrará... Te dejo la implementación actual del destructor de la clase TRegistry:


destructor TRegistry.Destroy;
begin
CloseKey;
inherited;
end;


Hasta luego.

;)

seoane
26-09-2006, 02:01:30
Tené por seguro que al destruir el objeto, la llave también se cerrará


Por supuesto, por eso puse el comentario, mas o menos gracioso (veo que no tanto :o ), para dar a entender que en este caso tampoco era necesario usar CloseKey. La intención de puntualizar lo del Rootkey y Closekey es que al usar "copiar y pegar" no se este olvidando algo importante, en ningún caso corregirte. Imagínate que quiere leer una clave fuera de HKEY_CURRENT_USER o varias claves diferentes, en ese caso ya no daría igual.