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 11-06-2006
galmacland galmacland is offline
Miembro
 
Registrado: nov 2004
Posts: 48
Poder: 0
galmacland Va por buen camino
Question Almacenar valor en ejecutable en tiempo de ejecucion

Hola, quisiera saber si esto se puede hacer, imagino que si, teniendo en cuenta que los limites de la programacion estan en lo que sepas hacer. ahi va mi duda:

como haria para que el codigo de la aplicacion se modificara en tiempo de ejecucion, por ejemplo, durante la ejecucion de una aplicacion entrar un valor que permanezca en el codigo y compilado, a menos que nuevamente sea alterado el mismo. tipo cuando se registra un programa con un serial. se que se puede hacer almacenando la informacion en el registro, en algun archivo externo, pero queria saber si se podia hacer en el mismo ejecutable con solo insertarlo una sola vez...

gracias por las sugerencias por adelantado...
Responder Con Cita
  #2  
Antiguo 11-06-2006
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 que dices puede hacerse (que yo sepa, por ejemplo) mediante el uso de archivos de recursos. Concretamente haciendo uso de un recurso del tipo "RT_RCDATA".

Los pasos ha seguir serían los siguientes:
  1. Crear un archivo de recursos con al menos uno de tipo "RT_RCDATA" con un programa como XN Resource Editor
  2. Nombrar dicho recurso de manera que después podamos identificarlo claramente.
  3. Incluir en el ejecutable el archivo de recursos creado mediante la correspondiente directiva para el compilador.
  4. Actualizar el contenido de dicho recurso mediante las funciones BeginUpdateResource, UpdateResource y EndUpdateResource.
Algunas cosas a tener en cuenta son:
  1. No podemos (yo no sé cómo) eliminar el recurso del ejecutable, es decir, si su contenido aumenta, el peso del ejecutable lo hará en proporción: aunque luego "borremos" el contenido del recurso el mismo ocupará el espacio "máximo" ocupado previamente.
  2. El contenido del recurso se guarda "en claro" en el ejecutable. Con el programa mencionado anteriormente, por ejemplo, podría accederse al contenido del recurso.
  3. El ejecutable no podrá ser comprimido, al menos no con UPX (Ultimate Packer for Executables), que es con lo que lo he intentado. Si se comprime el ejecutable este se corromperá si actualizamos el recurso de marras.
  4. No es posible actualizar un recurso de un ejecutable en uso, esto es, no es posible (que yo sepa) actualizar el recurso de nuestro ejecutable desde el propio ejecutable. Tiene que ser otro programa el que lo haga, cuando el ejecutable en cuestión no esté en uso.
Adjunto un sencillo ejemplo (en realidad unas pruebas) sobre todo esto. se trata de dos programas de tipo consola. Uno es el que contiene un determinado recurso del tipo que estamos tratando. El otro programa puede ejecutarse de modo que actualize el dato contenido en el recurso del primero.

En el caso del ejemplo que adjunto y a modo de prueba, lo que se actualiza en el ejecutable es una supuesta "fecha de compilación". De este modo es fácil ver cómo se actualiza el contenido del recurso: lo que se verá es la fecha y hora actuales... cada segundo el dato es susceptible de cambiar.

Si tienes alguna duda ya sabes dónde estamos. Ya dirás qué te parece de todo esto.
Archivos Adjuntos
Tipo de Archivo: zip Fecha de compilación.zip (1,6 KB, 39 visitas)
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 11-06-2006 a las 15:32:22.
Responder Con Cita
  #3  
Antiguo 11-06-2006
galmacland galmacland is offline
Miembro
 
Registrado: nov 2004
Posts: 48
Poder: 0
galmacland Va por buen camino
Unhappy gracias

Gracias por tu respuesta, pero aun asi no es lo que necesito.. esto evidencia un archivo externo..yo estoy buscando validar una aplicacion con un serial sin tener que usar otros archivos. es decir que me compruebe que el serial es correcto despues de haberlo insertado una unica vez, y que se puedan utilizar las opciones de la aplicacion que me limitan una version demo al hacerlo.
Responder Con Cita
  #4  
Antiguo 11-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Tampoco hay que darle tantas vueltas. Si no puedes tener dos ejecutables, crea uno solo, cuando quieras actualizarlo que el mismo se copie a un directorio temporal ejecute la copia y se cierre. La copia actualizara el ejecutable original, lo volvera a abrir y se cerrara. Ahora solo falta que el original borre la copia del directorio temporal.

De todas formas si es para crear una demo, hay formas mas sencillas: claves en el registro, archivos de inicio, etc... que para un usuario experto ( hacker o crackers o como se autodenominen) son sencillos de romper pero guardar los datos en el ejecutable tampoco los va a despistar demasiado.
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
Agregar valor de un formulario a un reporte rave en tiempo de ejecucion alehillebrand Impresión 3 04-08-2010 19:42:31
Valor de los campos en ejecución Acanol SQL 3 08-05-2006 18:06:24
¿Como almacenar el valor de varios radiobutton en la BD? Nelly Varios 2 10-04-2006 19:47:52
Valor de tiempo de espera caducado senpiterno MS SQL Server 3 01-05-2005 02:50:03
problema al almacenar un valor V_Serrano OOP 0 19-08-2004 18:03:24


La franja horaria es GMT +2. Ahora son las 10:13:26.


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