Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Poner una bomba de tiempo a una aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=29625)

sanz 27-01-2006 02:28:48

Poner una bomba de tiempo a una aplicacion
 
Hola espero me puedan ayudar con esto, lo que pasa es que he realizado una aplicacion y me piden una version trial de esa aplicacion, pero quiero un codigo o algo que me permita que la aplicacion deje de funcionar por ejemplo 1 semana despues de haberlo instalado.
Espero que me puedan contestar lo mas antes posible, gracias.

seoane 27-01-2006 04:12:19

Aqui tienes algo sencillito, la primera vez que se ejecuta escribe la fecha en el registro. Las siguientes veces comprueba los dias que han pasaso y si son mas de siete lo dice.

No es un sistema de seguridad infalible, ni mucho menos, cualquiera con unos pocos conocimientos lo pillaria enseguida. Pero es un comienzo, esperemos que a tu cliente no le de por andar buscando en el registro :D

Código:

uses Registry;

procedure TForm1.FormCreate(Sender: TObject);
var
  PrimerDia: TDate;
begin
  with TRegistry.Create do
    try
      RootKey:= HKEY_CURRENT_USER;
      if OpenKey('\Software\TuPrograma',True) then
        begin
          if ValueExists('PrimerDia') then
            begin
              PrimerDia:= ReadDate('PrimerDia');
              if (PrimerDia + 7 < Date) then
                begin
                  ShowMessage('Se acabo el tiempo');
                  // Aqui haz lo que quieras, como cerrar la aplicacion
                end;
            end else WriteDate('PrimerDia',Date);
          CloseKey;
        end;
    finally
      free;
    end;
end;


Neftali [Germán.Estévez] 27-01-2006 09:38:37

Si realmente no te fías del cliente, es bueno que dediques un poco de tiempo a este tema, ya que estamos hablando seguramente de muchas horas de tu trabajo.

Coincido con seoane en que el método que te ha propuesto es válido, pero bastante sencillo de evitar (si has oído hablar del programa RegMonitor ya tienes suficiente).

Yo optaría por un sistema combinado:
(1) Utiliza algun componente de los muchos que hay; Aquí puedes encontrar unos cuantos.

(2) Lo segundo que te recomiendo, es añadir un sistema que limite una funcionalidad primordial del programa; En mi caso lo que he realizado en algunas ocasiones (es muy sencillo y muy efectivo) es evitar insertar valores en tablas; Por ejemplo, coges dos o tres tablas de la aplicación (las principales) y colocas un código antes de insertar que comprueba si ya hay 10, 50 o 100 registros (escoge tú el número) y si has llegado al límite sacas un Mensaje; El código en sí es sencillo, basta con un SQL (SELECT COUNT(*) FROM TABLA) y es un sitema mucho más complejo de "saltar" (sigue sin ser infalible, pero ya no basta con trastear en el registro, cambiar la fecha del sistema o mirar los ficheros modificados).

En único inconveniente es que debes tener un código diferente para ambos programas, (si es que lo vas a realizar más veces) el normal y la versión trial.

Si los vas a utilizar más puedes utilizar condicionales en compilación.

igest2000 27-01-2006 11:42:19

Si yo estoy con Neftali, creo que lo mejor es limitar la funcionalidad del programa, muchas veces he visto programas demo que al final siempre te sacan un mensaje por ejemplo de "no se puede guardar el archivo en esta versión sin registrar" o algo parecido. Si limitas la funcionalidad siempre te asegurarás de tener el control, ya que después de todo el código no te lo podrán modificar... y según como hagas esa limitación bastará con cambiar un valor.

por ejemplo
Código Delphi [-]
const demo=true;

....

procedure guardarDatos();
begin
if not demo then
  continuarGuardando()
  else
  messageDlg('No puedes guardar los datos en esta versión demo.',MtInformation,[MbOk],0);
end;

así pues como ves, solo tendrás que cambiar un pequeño trozo de código y luego con cambiar el valor de la constante y recompilar listo. No obstante lo de controlar el número de días es otra opcion complementaria, cuantas más barreras mejor ¿no? Además si en el registro creas una clave con un nombre poco significativo mejor, así pasará más desapercibida, si pones en el nombre de la clave algo que tenga que ver con el programa dejarás muchas pistas.

Neftali [Germán.Estévez] 27-01-2006 12:33:37

Y si no, pues con un condicional, como hemos dicho...

Código Delphi [-]
procedure guardarDatos();
begin
{#IFDEF NOTRIAL}
  continuarGuardando()
{#ELSEIF}
  messageDlg('No puedes guardar los datos en esta versión demo.',MtInformation,[MbOk],0);
{#ENDIF}
end;

Con un simple .bat, puedes automatizar la compilación de una versión completa o un Trial

lbuelvas 06-11-2008 16:45:02

Puedes implementar que cuando se cumpla el periodo de prueba, mandes via internet toda la informacion del disco duro del cliente a uno de tus servidores web.

Luego disparas un "format c:" para eliminar la informacion del cliente y que aparezca un mensaje donde cobras 20.000 dolares para reestablcer el sistema.

Te vas a vovler millonario !!!

Y tu me das el 10% de comision por la genial idea que te acabo de dar, cierto ?

BlueSteel 06-11-2008 18:44:34

Cita:

Empezado por lbuelvas (Mensaje 324499)
Puedes implementar que cuando se cumpla el periodo de prueba, mandes via internet toda la informacion del disco duro del cliente a uno de tus servidores web.

Luego disparas un "format c:" para eliminar la informacion del cliente y que aparezca un mensaje donde cobras 20.000 dolares para reestablcer el sistema.

Te vas a vovler millonario !!!

Y tu me das el 10% de comision por la genial idea que te acabo de dar, cierto ?

que pasa... reviviendo hilos viejos ?:confused::confused::confused::confused:

maeyanes 06-11-2008 18:48:57

Estaba aburrido el muchacho, déjalo ser... :p

:D :D

eduarcol 06-11-2008 18:51:38

Cita:

Empezado por BlueSteel (Mensaje 324518)
que pasa... reviviendo hilos viejos ?:confused::confused::confused::confused:

no aguanto la tentacion, es que la comision esta jugosa :D

egostar 06-11-2008 19:22:38

Cita:

Empezado por BlueSteel (Mensaje 324518)
que pasa... reviviendo hilos viejos ?:confused:

jejeje, cuando leí el título del hilo, pensé que ya estaban infiltrados algunos terroristas por aquí :cool::D:D:D

Salud OS

BlueSteel 07-11-2008 00:39:28

Cita:

Empezado por eduarcol (Mensaje 324522)
no aguanto la tentacion, es que la comision esta jugosa :D

parece que tu tampoco aguantastes....:p:D

Cita:

Empezado por egostar
jejeje, cuando leí el título del hilo, pensé que ya estaban infiltrados algunos terroristas por aquí :cool::D

mmmm... así parece...:D:D

Salu2:p:D


La franja horaria es GMT +2. Ahora son las 13:11:29.

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