Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Leer datos del registro de windows (https://www.clubdelphi.com/foros/showthread.php?t=81310)

dmartinezn 01-11-2012 21:11:33

Leer datos del registro de windows
 
Saludos amigos.
Quisiera leer unos datos del registro de windows,pero de la forma que lo estoy haciendo me devuelve nulo.
Código:

AnsiString temp;
  TRegistry * Registry = new TRegistry(KEY_ALL_ACCESS);
  Registry->RootKey = HKEY_LOCAL_MACHINE;
  if(Registry->KeyExists("Software\\DM\\N")){
  Registry->OpenKey("Software\\DM\\N",false);
  temp=Registry->ReadString("LicensePro");
  ShowMessage(temp);
  Registry->CloseKey();

LicensePro contiene:BA4F-0209-BB6D-E4CB-H3PRO, que es lo que quisiera obtener

ecfisa 01-11-2012 21:42:22

Hola dmartinezn.

No noto nada que pudiera estar provocando ese error en el código que pusiste, lo único que veo es que te falto cerrar una llave que seguramente sea producto de la copia y pegado.

Como lógicamente me es imposible probar con esa clave, te pongo un ejemplo que muestra la versión instalada de Mozilla Firefox, en esencia el código es similar:
Código:

void __fastcall TForm1::Button1Click(TObject *Sender) {

  TRegistry *reg = new TRegistry;

  reg->RootKey = HKEY_LOCAL_MACHINE;
  if (reg->KeyExists("SOFTWARE\\Mozilla\\Mozilla Firefox")) {
  reg->OpenKey("SOFTWARE\\Mozilla\\Mozilla Firefox", false);
  ShowMessage("Version actual de Mozilla Firefox: " +
    reg->ReadString("CurrentVersion"));
  reg->CloseKey();
  }
  //...
}

También probé reemplazando en tu código el valor de las claves por las que utilicé en el mio y funciona perfectamente.

Saludos.

ecfisa 02-11-2012 00:44:24

Hola de nuevo.

Una consulta, ¿ Intentaste ver desde el regedit si la clave HKEY_LOCAL_MACHINE\Software\DM\N\ existe y de ser así, si LicensePro si tiene algún valor ?

Saludos.

Casimiro Notevi 02-11-2012 14:23:21

Cita:

Empezado por dmartinezn (Mensaje 448547)
Aprovechando este mismo hilo, aunque no debería

Si sabes que no debes hacerlo, ¿por qué lo haces? :confused:
Por favor, sigue nuestra guía de estilo y crea un nuevo hilo/tema con la duda correspondiente, gracias por tu colaboración, saludos.

dmartinezn 02-11-2012 14:47:19

El problema que lo que pregunte se correspondia con lo que habia preguntado, pero aca no se queda bien de ninguna forma

ecfisa 02-11-2012 14:48:29

Hola dmartinezn.
Cita:

funciona perfectamente en c++ builder 6, donde me devuelve vacio es en c++ builder XE, no tengo idea de porque sucede eso.
En relación a esto, no te puedo ayudar por que no tengo la versión XE.

Cita:

Una vez que se registre la aplicación en una pc puedo ir al registro, ver esos valores y copiarlos en otra pc para registrar el programa.
Cual podría ser una forma aconsejable para hacer esto de la licencia.
No hay un método infalible para protegerse del copiado. Guardar la licencia previamente cifrada, serial del disco rígido, etc., dificultan la copia de tu aplicación a la grán mayoría. Pero ningún método garantíza que un experto no pueda finalmente descifrar las claves que buscas proteger.

Seguramente puedas sacar algunas ideas de estos enlaces:
Saludos.


La franja horaria es GMT +2. Ahora son las 05:16:18.

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