Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2009
Angel Fernández Angel Fernández is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia - España
Posts: 141
Poder: 20
Angel Fernández Va por buen camino
Acceder al registro de windows vista.

Hola a todos. Quisiera comentaros un problema que tengo con windows vista (y que no tenía en windows xp) al tratar de leer una clave del registro.
Concretamente se trata de saber la ubicación del fichero gbak.exe de firebird para realizar copias de seguridad.
Hasta ahora, el código que utilizaba y que ya digo, funciona perfectamente en windows xp, es el siguiente:

Código Delphi [-]
procedure TFormConfigurar.btnDetectarClick(Sender: TObject);
var
  v_reg: TRegistry;
  MaxFileNameLength, VolFlags, SerNum: DWord;
  rutabin: string;
begin
  with TRegistry.Create do
  begin
    v_reg := TRegistry.Create;
    v_reg.RootKey := HKEY_LOCAL_MACHINE;
    try
      v_reg.OpenKey('\SOFTWARE\Firebird Project\Firebird Server\Instances', False);
      rutabin := v_reg.ReadString('DefaultInstance') + 'bin\gbak.exe';
      closekey;
    finally
      v_reg.Free;
    end;
  end;

  edtRutaGBAK.Text := rutabin;
end;

Este código pone en la variable rutabin el texto de gbak.exe con la ruta completa para llamarlo con shellexecute.

He comprobado que la clave existe y que es correcta. Es la siguiente:

Equipo\HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances\DefaultInstance

¿Alguna forma de solucionarlo?

Un saludo al foro.
Responder Con Cita
  #2  
Antiguo 20-12-2009
Angel Fernández Angel Fernández is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia - España
Posts: 141
Poder: 20
Angel Fernández Va por buen camino
Perdón, olvidaba decir que no funciona no porque lanze ningún error sino porque la variable "rutabin" que debe leer el contenido de la clave, no toma ningún valor, siempre esta vacía.

Uso Delphi 7 sobre windows vista x64.

Un saludo.
Responder Con Cita
  #3  
Antiguo 28-12-2009
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 485
Poder: 17
Neeruu Va por buen camino
Cool Acceder al registro de windows vista

Hola!!!

El problema que estas teniendo es que los Windows de 64bit tienen dirección diferente para las aplicaciones de 32bit...

No sabria explicarte bien que es lo que hace windows con el registro... pero te doy un ejemplo para que entiendas..

Ejemplo:

Si una aplicación en un Windows de 32 bit guarda información en el registro
esto puede quedar así:

Cita:
HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab\SetupFolders
Pero si el Sistema Operativo es de 64bit, esta información se encuentra en:

Cita:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\KasperskyLab\SetupFolders

Espero que te Sirva...

Saluda Atte Neeruu!!!
Feliz Año Nuevo para Todo el Club Delphi!!!
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #4  
Antiguo 28-12-2009
Avatar de GaaK
GaaK GaaK is offline
Miembro
 
Registrado: oct 2005
Ubicación: Trujillo - Peru
Posts: 31
Poder: 0
GaaK Va por buen camino
Cita:
Empezado por Angel Fernández Ver Mensaje
... He comprobado que la clave existe y que es correcta...
Hola, para poder acceder al registro debe correr la aplicación como administrador.
Me pasó con mi programa MultiMSN

Haga clic derecho sobre su .exe y Ejecute como administrador.
Saludos.
- Gaak -
__________________
L'Gaak dice
Responder Con Cita
  #5  
Antiguo 29-12-2009
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 485
Poder: 17
Neeruu Va por buen camino
Cita:
Empezado por Angel Fernández Ver Mensaje

He comprobado que la clave existe y que es correcta.

La clave esa puede existir pero cuando intentas acceder windows te re direcciona a la parte donde guarda las claves de los programas de 32 bit...
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #6  
Antiguo 04-01-2010
voci voci is offline
Miembro
 
Registrado: oct 2003
Posts: 97
Poder: 21
voci Va por buen camino
Si realmente quieres acceder a la clave en HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab\SetupFolders sin que te redireccione, bien porque no exista una copia en HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\KasperskyLab\SetupFolders, lee este documento de microsoft y lo conseguirás sin problema:

http://msdn.microsoft.com/en-gb/libr...29(VS.85).aspx

Saludos.
Responder Con Cita
  #7  
Antiguo 04-01-2010
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
En lugar de la función OpenKey, debes utilizar OpenKeyReadOnly

El problema es que necesitas privilegios de administrador en XP y posteriores para hacer la llamada a OpenKey.

Saludos.

PD.: OpenKey sin privilegios de administrador solo puede ser utilizado en la clave HKEY_CURRENT_USER
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #8  
Antiguo 20-11-2010
Avatar de mikzero
mikzero mikzero is offline
Registrado
 
Registrado: feb 2009
Posts: 3
Poder: 0
mikzero Va por buen camino
Mismo Problema con Windows 7 Delphi 2007

Cita:
Empezado por Angel Fernández Ver Mensaje
Hola a todos. Quisiera comentaros un problema que tengo con windows vista (y que no tenía en windows xp) al tratar de leer una clave del registro.
Concretamente se trata de saber la ubicación del fichero gbak.exe de firebird para realizar copias de seguridad.
Hasta ahora, el código que utilizaba y que ya digo, funciona perfectamente en windows xp, es el siguiente:

Código Delphi [-]
procedure TFormConfigurar.btnDetectarClick(Sender: TObject);
var
  v_reg: TRegistry;
  MaxFileNameLength, VolFlags, SerNum: DWord;
  rutabin: string;
begin
  with TRegistry.Create do
  begin
    v_reg := TRegistry.Create;
    v_reg.RootKey := HKEY_LOCAL_MACHINE;
    try
      v_reg.OpenKey('\SOFTWARE\Firebird Project\Firebird Server\Instances', False);
      rutabin := v_reg.ReadString('DefaultInstance') + 'bin\gbak.exe';
      closekey;
    finally
      v_reg.Free;
    end;
  end;

  edtRutaGBAK.Text := rutabin;
end;

Este código pone en la variable rutabin el texto de gbak.exe con la ruta completa para llamarlo con shellexecute.

He comprobado que la clave existe y que es correcta. Es la siguiente:

Equipo\HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances\DefaultInstance

¿Alguna forma de solucionarlo?

Un saludo al foro.
Tengo el mismo Problema, cuando quiero hacer el ReadString no me devuelve nada y la variable rutabin queda con valor "bin\gbak.exe" cuando deberia traerme toda la ruta + bin\gbak.exe.

Estoy usando WINDOWS 7 y Delphi 2007 alguna idea?... Gracias
Responder Con Cita
  #9  
Antiguo 28-11-2012
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Respondo tardíamente (más que responder, es rescatar un tema de la tumba jeje ) por si le sirve a alguien:

Hay que reemplazar
Código Delphi [-]
v_reg.OpenKey('\SOFTWARE\Firebird Project\Firebird Server\Instances', False);

Por:
Código Delphi [-]
v_reg.OpenKeyReadOnly('\SOFTWARE\Firebird Project\Firebird Server\Instances');

Y voilá !!! , ya se puede leer la clave del registro indistintamente en Windows XP, Windows Vista, Windows 7 y Windows 8.

De hecho tengo preparada una función que la utiliza, para leer la ubicación de Firebird y poder ejecutar utilidades como Gbak:

Código Delphi [-]
Function Trayecto_Firebird: String;
Begin
  Result := '';
  With TRegistry.Create Do
    Try
      RootKey := HKEY_LOCAL_MACHINE;
      If OpenKeyReadOnly('\SOFTWARE\Firebird Project\Firebird Server\Instances') Then // Corregido para Windows 7 (se reemplaza OpenKey por OpenKeyReadOnly)
        Result := ReadString('DefaultInstance');
    Finally
      Free;
    End;
End;

Saludos !
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.

Última edición por rretamar fecha: 28-11-2012 a las 14:26:24.
Responder Con Cita
  #10  
Antiguo 19-01-2014
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
Cita:
Empezado por rretamar Ver Mensaje

Y voilá !!! , ya se puede leer la clave del registro indistintamente en Windows XP, Windows Vista, Windows 7 y Windows 8
Comprobado

Útil para leer registro de Windows 64bits
Responder Con Cita
Respuesta



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
como escribir en el registro de windows Vista manolop API de Windows 3 08-12-2010 19:42:15
Error al escribir en el Registro en Windows Vista Ana María OOP 4 16-09-2008 16:35:13
Problemas con registro windows vista JF Sebastian Varios 6 14-01-2008 22:16:55
Acceso al registro en Windows Vista sinalocarlos Varios 2 21-03-2007 21:10:49
Acceder al Registro kloud C++ Builder 2 31-01-2006 16:46:22


La franja horaria es GMT +2. Ahora son las 01:48:22.


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