Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Programa trial

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Programa trial Responder citando

Hola mi consulta es la siguiente. Me gustaria hacer que mi software sea trial tal que se pueda probar sin limitaciones por una cantidad x de dias. pero que a la vez al modificar la fecha el programa caduque en forma inmediata.

Me pueden guiar'?

estaba pensando en guardar la fecha de sistema de la primera vez que se ejectua el software en algun registro de nombre poco comun. luego compararla cada vez que abra el software indicando la cantidad de dias que queda de prueba. pero me complica el hecho que no se mucho de como agregar cosas al registro desde el software.

alguna manito??
_________________
-------------------------------------------
http://mundodigital.foro.st
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Se me ocurre que puedes sacar la fecha de instalación a partir de la que tenga la carpeta donde está instalado con un FileDate, y a partir de ahí calcular los días de uso
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

bien, me parece. pero y como guardo eso en el registro??.
_________________
-------------------------------------------
http://mundodigital.foro.st
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

¿En un archivo ini? ¡Chungo! Porque se puede modificar con el bloc de notas. Pero bueno:
    1. Creas el archivo ini
    Código:
    WritePrivateProfileString(NULL, NULL, NULL, "File.ini");

    2. Extraes la fecha de la carpeta
    Código:
    AnsiString Carpeta = ExtractFilePath(Application->ExeName);
    TDateTime Fecha = FileDateToDateTime(FileAge(FileName)))

    3. Grabas el dato en el ini
    Código:
    WritePrivateProfileString("FECHA", "Dia", Fecha.FormatString("yyyymmdd", "File.ini");

    4. Recuperas el dato en el OnCreate del módulo pirncipal
    Código:
    char Cadena[9] = "\0";
    GetPrivateProfileString("FECHA", "Dia", "", Cadena, sizeof(Cadena), "File.ini");
    if (AnsiString(Cadena).IsEmpty())
    {
         [MENSAJE DE COPIA ILEGAL, por ejemplo]
         Application->Terminate();
         return;
    }
    if (StrToInt(Date().FormatFloat("yyyymmdd")) - StrToInt(AnsiString(Cadena) > 30)
    {
         [MENSAJE FIN DE PRUEBAS, por ejemplo]
         Application->Terminate();
         return;
    }

Yo el registro de Windows no lo tocaría.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)


Ultima edición por Angel el Mar 13 Feb, 2007 8:16 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

gracias Angel. Voy a usar este mientras de todas maneras quiero profundizar lo del registro. cualquier cosa lo publico aca.

gracias por todo
_________________
-------------------------------------------
http://mundodigital.foro.st
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

haciendo algo rapido, lo primero que se me ocurre es lo siguiente

Código:
TRegistry *lRegistry = new TRegistry();
   bool ExisteLLave;
   TDate FechaHoy=Date();
   int diasActivos = 15; // indico cuantos dias activo
   lRegistry->RootKey=HKEY_LOCAL_MACHINE; // uso la clave principal del maquina pero puede cambiarse a otra MAS oculta
   // intentamos abrir la llave, si no existe, se crea la primera vez
   ExisteLLave = lRegistry->OpenKey("SOFTWARE\\TuPrograma\\LaFecha", false);

   if(!ExisteLlave)
   {
      // si no existe grabamos la primera vez
      lRegistry->OpenKey("SOFTWARE\\TuPrograma\\LaFecha", true);
      lRegistry->WriteDate("FechaPrograma",FechaHoy);
   }
   else
   {
      // ya existe verificamos la fecha
      // la leemos y la ponemos en una variable
      TDate FechaRegistrada = lRegistry->ReadDate("FechaPrograma");
      int diferencia = FechaHoy - FechaRegistrada;
      if(diferencia > diasActivos)
      {
         ShowMessage("El sofware ha petado!! jeje");
         Application->Terminate();
      }
      else
      {
         ShowMessage("Le quedan "+IntToStr(diferencia)+" dia(s)\n"
                  "para activar el Software");
         // y continuamos con la ejecucion del programa
      }
   }

y combinado esto con lo que te ha dado angel con respecto a lo de la carpeta, pues creo que complemento lo que dice angel,

pd: sin miedo, el registro no le pasa nada, no va mas que reinstales el equipo y nada mas, jejej, no hay mucho problema dentro de la ayuda Borland viene como usar el regisrtro asi mismo aqui en el foro existe mucha información.

Saludos!!
_________________
Cool


Ultima edición por Cesar C. Salazar Gonzalez el Jue 18 Ene, 2007 4:20 pm, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

César: Con tu manera no hace falta verificar la fecha de la carpeta. Simplemente, la primera vez que arranque el programa se graba ese dato y listo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola,

Cita:

ExisteLLave = lRegistry->OpenKey("SOFTWARE\\TuPrograma\\LaFecha", false);


Yo intentaria esconderla, para que no sea tan evidente. Ya que lo primero que probaria seria a cambiarla la fecha y ver si me funciona. O tal vez borrar las entradas en el registro, ...

En fin, la idea es poner dificultades para protegernos.

Un saludo
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Cita:

ExisteLLave = lRegistry->OpenKey("SOFTWARE\\TuPrograma\\LaFecha", false);


claro.. en el caso de alcohol 120, por ejemplo la fecha donde guardan en registro esta muy bien escondida. ya que aun borrando todas las entradas con las palabras claves alcohol o el nombre de la empresa el software sigue reclamando el trial vencido. Lo ideal seria guardar la fecha con un nombre de "windows" o "microsoft" por ejemplo y sin hacer alusion a ningun tipo de fecha.

Muchas gracias por sus post.. con todo voy a ir armando algo bien hecho
_________________
-------------------------------------------
http://mundodigital.foro.st
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: RESPUESTA Responder citando

Buenas yo lo que hago es mirar el numero de serie del disco duro ( buscalo que pone como hacerlo en este foro). El programa da este numero al usuario en una ventana de registro con un cuadro de texto en blanco. El cliente por la web o llamando por tlf me da el codigo este y yo le doy otro numero ( que yo el que entrego es el mismo pero en hexadecimal sumandole 5 ). si no pone el numero de registro tiene un numero limitado de ejecuciones o for fechas. Esto lo pongo en una archivo .dat y lo llamo en plan "winch.dat", algo asi para que se confunda con archivos de windows y lo guardo en c:. El programa cuando inicia comprueba que este archivo contiene el numero hexadeciamal del numero de serie del disco si no es asi conprueba otro archivo de fecha de instalacion o un contador de ejecuciones.


Espero que te sea util
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.