| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
DarkSpawn Lt JG


Registrado: 19 Mar 2005Mensajes: 72Ubicación: Coquimbo Chile
|
Publicado: Mie 17 Ene, 2007 5:02 am Asunto: Programa trial |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
DarkSpawn Lt JG


Registrado: 19 Mar 2005Mensajes: 72Ubicación: Coquimbo Chile
|
Publicado: Mie 17 Ene, 2007 2:52 pm Asunto: |
|
|
bien, me parece. pero y como guardo eso en el registro??. _________________ -------------------------------------------
http://mundodigital.foro.st |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 17 Ene, 2007 5:45 pm Asunto: |
|
|
¿En un archivo ini? ¡Chungo! Porque se puede modificar con el bloc de notas. Pero bueno:
| 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 |
|
 |
DarkSpawn Lt JG


Registrado: 19 Mar 2005Mensajes: 72Ubicación: Coquimbo Chile
|
Publicado: Mie 17 Ene, 2007 10:20 pm Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 18 Ene, 2007 7:03 am Asunto: |
|
|
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!! _________________

Ultima edición por Cesar C. Salazar Gonzalez el Jue 18 Ene, 2007 4:20 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Jue 18 Ene, 2007 2:22 pm Asunto: |
|
|
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 |
|
 |
DarkSpawn Lt JG


Registrado: 19 Mar 2005Mensajes: 72Ubicación: Coquimbo Chile
|
Publicado: Jue 18 Ene, 2007 5:22 pm Asunto: |
|
|
| 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 |
|
 |
Dream Lt JG


Registrado: 14 Feb 2003Mensajes: 57Ubicación: TOLEDO
|
Publicado: Lun 12 Feb, 2007 8:30 pm Asunto: RESPUESTA |
|
|
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 |
|
 |
|