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 08-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Evento adecuado para controlar si el software está registrado

Feliz Año a todos los usuarios de este fantástico foro!!!
Estoy intentando dotar de algo de seguridad a una aplicación realizada simplemente para evitar la libre distribución del mismo (sino mi jefe me mata ). Estoy usando el componente mxProtector y una protección que se basa en registrar el software con un número de serie que se obtiene a partir del id de hardware y de un username. Mi pregunta es la siguiente, ¿qué evento es el más apropiado para realizar este control?
Hay que tener en cuenta que el funcionamiento sería, algo como sigue:
if Registrado then
begin
//Inicialización del programa
//Cauce normal del programa
end
else
begin
//Formulario de registro
if Registrado then
//Inicialización del programa
//Cauce normal del programa
else
Close;
end;

Gracias!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #2  
Antiguo 08-01-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Lo cierto es que no creo que haya un sólo lugar en el que actuar en tu caso. Puede ser donde tú quieras o necesites. Puede ser al principio del todo, en el propio archivo "DPR", antes de crear ningún formulario de la aplicación; pero, también puede ser una vez inicializada la aplicación, incluso dejar al usuario usar ciertas partes del programa con normalidad, mientras que no otras, hasta que no lo "registre". No sé si con esto te digo algo que merezca la pena o qué.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 08-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola Dec,
Primero decirte que cualquier comentario que aporte algo merece la pena y después de hacerte un poco la pelota comentarte que me interesaría hacer el control antes de crear los formularios, pero no sé como hacerlo. Me dices que se puede hacer en el dpr, pero no se como. Por otra parte pienso como lo voy a hacer antes de crear los formularios si el formulario de registro es otro formulario. Estoy atascaillo aysss
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #4  
Antiguo 08-01-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
yo lo pondría en el evento "OnCreate" de tu formulario principal y la primera instrucción, sería la inicialización del componente. Revisa la ayuda y los "demos" que hay sobre ese componente, en ellos se explica bastante bien como proteger la aplicación por fechas o por número de serie.
__________________

Responder Con Cita
  #5  
Antiguo 08-01-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Aparte de lo dicho por el amigo Contra, echa un vistazo a este archivo "DPR":

Código Delphi [-]
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  URegisterForm in 'URegisterForm.pas' {RegisterForm};

{$R *.res}

begin
  Application.Initialize;

  with TRegisterForm.Create(nil) do
  try
    ShowModal();
  finally
    Free();
  end;

  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Como ves, se trata del archivo "DPR" de un proyecto "vacío" (aunque ya existe el formulario "Form1", que, es el principal) al que se le ha añadido otro formulario. Pues bien, antes de crear el formulario principal de la aplicación, como puedes ver, podemos crear y utilizar otro formulario, u otro componente. No sé si con esto ya coges la idea o no.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 08-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Gracias a los dos,
Por una parte ya estaba trabajando en la solución de ContraVeneno porque me parecía lo más lógico, pero no tenía muy claro si funcionaría así o no por que el Registro también era un formulario. Por otra parte creo que entiendo tu idea Dec, aunque no sabía que se podía incluir código en el DPR. Creo que te aportación ha sido muy valiosa.
Ya por último y con la solución de ContraVeneno casi implementada me he encontrado con un problema. Si la aplicación está registrada va bien. Si se registra tb va bien. El problema es que no se tenga un número de serie válido y la aplicación deba finalizarse. En este caso debe terminarse sin dar ningún mensaje de aviso cosa que hago en el evento OnCloseQuery. ¿Hay alguna forma de finalizar la aplicación sin pasar por este evento?
Gracias de nuevo!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #7  
Antiguo 08-01-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
¿Hay alguna forma de finalizar la aplicación sin pasar por este evento?
Ya lo creo:

Código Delphi [-]
Application.Terminate();

Respecto del archivo "DPR", piensa que una aplicación de consola sólo cuenta con este archivo. Delphi nos "abstrae" del mismo, trabajando directamente con formularios, pero, como has visto, estos formularios se crean en el archivo "DPR", es ahí donde la aplicación se pone en marcha, y es perfectamente posible programar lo que se necesite ahí mismo. Y ya no digo más, que, luego todo se sabe.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 08-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Joer macho es q sabeis de to!!! jeje
Gracias de nuevo... aunq prometo seguir dando más la lata
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #9  
Antiguo 08-01-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Revisa el demo sobre el componente que estas utilizando, ahí viene como comprobar las fechas de registro, el ID del hardware, el número de serie, etc... ese componente tiene un evento para cada situación. En otras palabras, en lugar de manejarlo en el OnCloseQuery, lo podrías manejar en el OnExpiration o en el OnInvalidSerialNumber, que son eventos del componente.
__________________

Responder Con Cita
  #10  
Antiguo 08-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por vejerf
El problema es que no se tenga un número de serie válido y la aplicación deba finalizarse
Por esto mismo, a mi me parece más adecuado lo que plantea dec porque, ¿para qué construir un formulario (el principal) si al final cabe la posibilidad de que no lo necesitemos?

Lo que pasa es que, dado que se trata de un componente, lo más cómodo es insertarlo en algún lugar, y lo más a la mano es el formulario principal; pero también puedes insertarlo en el formulario de registro y usar ahí los eventos que te indica ContraVeneno.

// Saludos
Responder Con Cita
  #11  
Antiguo 08-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Me parece muy buena tu idea Roman... así que intentaré llevarla a cabo. Si me encuentro con algún problemilla lo mismo voy variando los planes .
Gracias a todos!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #12  
Antiguo 09-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola de nuevo,
En una primera prueba de registro todo funciona perfectamente tal y como yo quería. La solución de incluir el formulario de registro en el .dpr antes de crear cualquier otro formulario me funciona muy bien.
Gracias a todos por vuestra inestimable e impagable ayuda
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #13  
Antiguo 09-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Pues me he precipitado al decir que todo iba bien. La cosa es que me falla al volver a iniciar la aplicación habiéndome registrado, entonces me vuelve a pedir el nº de serie como si no me hubiera registrado. No sé si el fallo está en la inicializáción del componente o donde. Os dejo el código a ver si veis algo extraño. Creo que en el dpr no está el fallo aunq lo dejo aquí.

Código Delphi [-]
var
  Registrado : Boolean;
  RegistroForm : TRegistroForm;
begin
  Application.Initialize;
  try
    RegistroForm := TRegistroForm.Create(nil);
    Registrado := RegistroForm.mxProtector.IsRegistered;
    if not Registrado then
    begin
      RegistroForm.ShowModal; //Formulario para registrarse en el que podemos o registrarnos o cancelar el registro
      Registrado := RegistroForm.mxProtector.IsRegistered;
      if not Registrado
        Application.Terminate
      else
        //Continuo con la aplicacion
    end
    else
      //Continuo con la aplicación
end;

Gracias.
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #14  
Antiguo 09-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ni idea. Aquí habría que saber cómo funciona el componente y cómo lo estás usando dentro de TRegistroForm. Aparentemente el registro no se hace.

// Saludos
Responder Con Cita
  #15  
Antiguo 09-01-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
a mi se me hace que va por aquí:

Cita:
Empezado por mxPRotectoHelp
procedure Init;

Unit
mxProtector

Description
Use Init to check the registrations in one step.
If poAutoInit included in Options this method will be called automatically after application lunch, is it is not included you have to call it or one of following methods to check the registration.

* CheckPassword
* CheckStartTrial
* CheckTimeTrial
* CheckDayTrial
* CheckRegistration
__________________

Responder Con Cita
  #16  
Antiguo 06-02-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola de nuevo,

Tengo un problema con el componente MxProtector a la hora de generarme el nº de serie y es que me está generando el mismo para varios equipos. Yo había realizado la prueba en 3 PC's distintos y me daba distintos nº de serie. Para generar los nº de serie se basa en el Id hardware, pero para mi sorpresa ayer fui a instalarlo en 4 portátiles Panasonic y me leía el mismo Id hardware y por tanto me generaba el mismo serial.
¿Como puedo hacer para que me genere seriales distintos para PC's distintos?
¿Ese Id hardware de donde lo toma, es decir, donde está registrado para yo poder verlo?

Gracias!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #17  
Antiguo 06-02-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
según tengo entendido, la llave la genera considerando el IDHardware y el nombre de usuario... podría ser que las laptops al ser de la misma marca, sean de la misma serie, utilicen el mismo hardware... ¿pero el nombre de usuario al que registras es el mismo?
__________________

Responder Con Cita
  #18  
Antiguo 06-02-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Pues sí le daba el mismo nombre de usuario. Es una aplicación que debe funcionar independientemente de las cuentas de usuario en el PC, entonces yo a ese campo lo que hice fue darle el nombre de la aplicación, pues pensaba que el Id Hardware sería distinto en cada uno.
Gracias por tu respuesta.
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #19  
Antiguo 06-02-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
pues yo no utilizo ese componente sino lo hago algo similar de la siguiente manera, coloco 4 Edit, en el 1º coloco la Idetificación : que es el nombre del programa a registrar (ej.Soft1), en el 2º IdCPU que es la Id del hardware, en el 3º Fecha que es la fecha de labios interna, y la 4º registrado a que es el nombre de la empresa u otro, despues estos 4 edits los convierto en numeros, los sumo, y lo multiplico por un numero en especial, y tachan ya tenemos el codigo, y para la parte de registración, lo hago de un modo externo algo similar como la licencia de Delphi 2009.

¿será seguro este metodo? ¿lo podrán hackear y decifrar el metodo?
gracias.
Responder Con Cita
  #20  
Antiguo 09-02-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola de nuevo,
Volviendo al tema, mi duda es si hay algún otro campo que sea un identificativo único de un PC para poder usarlo para el registro. ¿Se os ocurre alguno? Si es así ¿como se obtiene?
Gracias!!!
__________________
"Patientia et constantia taelecum"
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
¿Cómo saber el formato adecuado de los datos para hacer una consulta? Alcolea Varios 3 08-01-2009 08:30:38
Es TDBCtrlGrid el control adecuado para un TPV hibero OOP 1 22-04-2008 08:45:18
Extraer el Nombre y la Organización a la que está registrado Windows Cecil API de Windows 4 22-12-2007 08:56:59
Tipo de dato mas adecuado, para un campo de moneda Chogo Firebird e Interbase 9 08-08-2007 15:03:00
No encuentro el evento adecuado Delfino Conexión con bases de datos 5 24-10-2003 14:19:00


La franja horaria es GMT +2. Ahora son las 19:02:56.


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