Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-08-2011
KnoX_RuS KnoX_RuS is offline
Miembro
 
Registrado: jul 2010
Posts: 13
Poder: 0
KnoX_RuS Va por buen camino
Question Comprobar llave en el Registro

Hola a todos.

La duda es como puedo averiguar si una determinada llave existe en el registro, osea por ejemplo si la llave existe me abra un mensaje diciendo que esta y si no pues no.

El caso que leer y escribir en registro se pero no consigo hacer eso con un If y else.

salu2
Responder Con Cita
  #2  
Antiguo 31-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola KnoX_RuS.

Código Delphi [-]
...
uses Registry, StrUtils;

function ExistsKey(const ARootKey: HKEY; const AKey: string): Boolean;
begin
  Result:= True;
  with TRegistry.Create do
  try
    RootKey := ARootKey;
    if not OpenKey(AKey, False) then
      Result:= False;
  finally
    Free
  end
end;

Llamada de ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
  Valor = '\Software\Microsoft\Windows\CurrentVersion';
begin
  Caption:= IfThen(ExistsKey(HKEY_LOCAL_MACHINE, Valor), 'Existe', 'No existe');
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 31-08-2011
Metal_Kingdom Metal_Kingdom is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 3
Poder: 0
Metal_Kingdom Va por buen camino
Hola KnoX, creo que ya me conoces..

Para hacerlo, puedes usar KeyExists, declarando previamente el unit registry en Uses y la clase TRegistry.

La opción de nuestro amigo ecfisa es completamente válida también.

Un saludo!
Responder Con Cita
  #4  
Antiguo 31-08-2011
KnoX_RuS KnoX_RuS is offline
Miembro
 
Registrado: jul 2010
Posts: 13
Poder: 0
KnoX_RuS Va por buen camino
Hey que hay metal, gracias a los 2 consegui solucionarlo con buestra ayuda.


salu2
Responder Con Cita
  #5  
Antiguo 01-09-2011
KnoX_RuS KnoX_RuS is offline
Miembro
 
Registrado: jul 2010
Posts: 13
Poder: 0
KnoX_RuS Va por buen camino
Bueno lo quise hacer con keyExist y no me salio.

Lo hice asi:
Código:
program Project1;

uses
  windows,
  SysUtils,
  Registry;
Var
  Registro:TRegistry;
begin
If Registro.KeyExists('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Sidebar') then begin
MessageBoxA(0,'LLave encontrada!','Bien', 64);
end;
MessageBoxA(0,'LLave no encontrada!','Mal', 64);

end.
Donde los MessageBoxA iria otro code eso lo puse para comprovar si funciona.

salu2 y gracias
Responder Con Cita
  #6  
Antiguo 01-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Código Delphi [-]
...
uses Registry;
...
begin
 with TRegistry.Create do
   if KeyExists('Software\Microsoft\Windows\CurrentVersion\Run\Sidebar') then
     MessageBoxA(0,'LLave encontrada!','Bien', 64)
   else
     MessageBoxA(0,'LLave no encontrada!','Mal', 64)
end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 01-09-2011
KnoX_RuS KnoX_RuS is offline
Miembro
 
Registrado: jul 2010
Posts: 13
Poder: 0
KnoX_RuS Va por buen camino
Bueno me da error en el penultimo end;

Código:
program Project1;

uses
  windows,
  SysUtils,
  Registry;
begin
 with TRegistry.Create do
   if KeyExists('Software\Microsoft\Windows\CurrentVersion\Run\Sidebar') then
     MessageBoxA(0,'LLave encontrada!','Bien', 64)
   else
     MessageBoxA(0,'LLave no encontrada!','Mal', 64)
end;
end.
Y me hace falta mirarlo en HKEY_CURRENT_USER osea siempre me dice que no se encontro la llave cuando borro ese penultimo end;

salu2 y gracias por la ayuda que me estas dando.
Responder Con Cita
  #8  
Antiguo 01-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Disculpá, lo hice de memoria y me olvidé de RootKey...


Código Delphi [-]
begin
  with TRegistry.Create do
  begin
    RootKey:= HKEY_CURRENT_USER;
    if KeyExists('Software\Microsoft\Windows\CurrentVersion\Run\Sidebar') then
      MessageBoxA(0,'LLave encontrada!','Bien', 64)
    else
      MessageBoxA(0,'LLave no encontrada!','Mal', 64);
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-09-2011 a las 17:56:29.
Responder Con Cita
  #9  
Antiguo 01-09-2011
KnoX_RuS KnoX_RuS is offline
Miembro
 
Registrado: jul 2010
Posts: 13
Poder: 0
KnoX_RuS Va por buen camino
Humm el code parece estar bien del todo pero me sige dando llave no encontrada cuando esa llave si existe en cualquier windows 7.

saludos.
Responder Con Cita
  #10  
Antiguo 01-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por KnoX_RuS Ver Mensaje
Humm el code parece estar bien del todo pero me sige dando llave no encontrada cuando esa llave si existe en cualquier windows 7.

saludos.
Hola.

La verdad no puedo decir nada por que no tengo Windows 7, pero hice esta prueba que funciona sin problemas:
Código Delphi [-]
uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
const
  AKEY: array[0..1] of string=('Software\Microsoft\Windows\CurrentVersion', // existente
                               'Software\Microsoft\Windows\CurrentVerXXXX'); // inexistente
var
  v: Integer;
  r: TRegistry;
begin
  Randomize;
  v:= Random(2);
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if KeyExists(AKEY[v]) then
      MessageBoxA(0,PChar(AKEY[v]+': Encontrada'),'Bien', 64)
    else
      MessageBoxA(0,PChar(AKEY[v]+': No existe'),'Mal', 64);
  finally
    Free;
  end;
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 01-09-2011
KnoX_RuS KnoX_RuS is offline
Miembro
 
Registrado: jul 2010
Posts: 13
Poder: 0
KnoX_RuS Va por buen camino
Estuve viendo y si pongo solo direccion de carpeta '\Software\Microsoft\Windows\CurrentVersion\Run\' si dice que existe pero las llaves de las carpetas no las comprueva osea si pongo '\Software\Microsoft\Windows\CurrentVersion\Run\Sidebar' dice que no existe.


saludos.
Responder Con Cita
  #12  
Antiguo 01-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Ahora veo..., lo que sucede es que lo que estas buscando no es una clave es un valor.

Entonces en tu caso sería:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('Software\Microsoft\Windows\CurrentVersion\Run\', False) then
      if ValueExists('Sidebar') then
        ShowMessage('Valor existente')
      else
        ShowMessage('Valor inexistente');
  finally
    Free;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #13  
Antiguo 01-09-2011
KnoX_RuS KnoX_RuS is offline
Miembro
 
Registrado: jul 2010
Posts: 13
Poder: 0
KnoX_RuS Va por buen camino
Ostia es verda, perdoname por confundirte ahora sique si jeje.

Muchas gracias y saludos!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
De la mochila a la llave USB marcoszorrilla La Taberna 2 15-10-2007 05:59:58
Llave primaria repetida Coco_jac Varios 5 30-08-2007 00:48:12
generar llave gsilvei Varios 4 09-12-2006 01:18:44
campos llave combinados suppergus Varios 2 03-05-2005 00:32:38
Llave de dos campos jovehe Tablas planas 3 30-09-2004 08:42:52


La franja horaria es GMT +2. Ahora son las 18:42:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi