|
Items
Las claves de registración (Keys)
Significado de cada uno de los campos
Datos locales de registración
Datos de las claves
Los datos de registración remotos OLM
Que hacer con los datos?
Los métodos WriteAppData y WriteKeyData
Los métodos ReadAppData y GetKeyData
Que es una clave genérica?
LAS CLAVES DE REGISTRACION (KEYS)
Las Claves son códigos con el formato siguiente: XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX con una longitud total de 31 caracteres. Una clave de registración contiene internamente campos de datos para controlar la aplicación. Los campos incluidos dentro son los siguientes:
Campos de una clave de registración:

Campo long tipo
------------- ---- -----
Days 4 word
Users 2 byte
Instances 2 byte
Startdate 4 word
Key 2 byte
iCode 4 word
AppID 4 word
Values 3 hex string
KeyType 1 nibble
Checksum 2 byte
----
Long. Total 28
Estos campos son concatenados en un solo string, que es fuertemente encriptado con el algoritmo Rijndael y agregandole los guiones para darle un formato más legible. El siguiente es un ejemplo de clave de registración terminada:
98RAWTV-9GP5KLK-T7RMRW9-AD305UQ
Significado de cada uno de los campos de una clave de registración
Days
Días autorizados para una clave de tipo trial o temporal. Si la clave es permanente toma el valor 65535
Users
Cantidad de usuarios que podrán compartir la clave de registración a través del OLM.
Instances
Cantidad de instancias de la aplicación que se permite ejecutar simultaneamente.
StartDate
Fecha de inicio del periodo autorizado para claves de tipo trial y temporal. Si la clave es permanente toma el valor 65535.
Index
El número de la clave. Número que identifica la clave dentro de los datos de registración. De tipo byte cuyo valor puede estar entre 0 y 254.
iCode
Es la suma de chequeo de la propiedad InstallCode proveniente del hard y otras fuentes. Es incluido para ser posteriormente comparado con el que proviene del computador donde se instala la aplicación para comprobar que la clave sea la apropiada para ese computador.
AppID
Numero identificatorio de la aplicación.
Values
Consiste de tres nibbles (1.5 bytes). Este campo multipropósito fue agregado en la versión 3.0 y permite que Ud. con una sola clave controle muchas opciones en su aplicación, eliminando así la necesidad de utilizar varias claves para controlar su aplicación. En los ejemplos verá como se puede utilizar este campo de diversas maneras. Vea la función decodevalues() que toma los tres nibbles y los convierte en un arreglo de booleans. Vea también en el procedimiento ShowRegData() como transformar este valor en un solo valor entero de 3 nibbles (0..4095) o tres valores enteros de 1 nibble (0..15) o 12 valores boolean.
KeyType
Tipo de Clave. Los siguientes son los valores posibles:
0=trial, 1=temporal, 2=permanent, 3=unregister, 4=unregisterall
Para claves genéricas sumar 5. Por ejemplo 5=trial-generica, 6=temporal-generica, etc.
CheckSum
Suma de chequeo de todos los campos previos. Sirve para verificar la clave de registración.
En algunos ejemplos podrá ver los datos de registración de una clave en un cuadro como el siguiente:
Aquí podemos ver los datos extraidos de una la clave de registración, mediante el método GetKeyData() donde se pasa como parámetro de entrada el número de clave (Index) y como parámetro de salida una variable registro del tipo TKeyData que recibe los campos que se ven a la izquierda.
Además de los campos ya descriptos anteriormente se obtienen otros valores relacionados, a saber:
Status: El estado de registración actual de la clave. Puede ser:
1) Unregistered: Significa que no existe ninguna clave registrada para este Index.
2) Moved: La clave correspondiente al Index dado fue marcado para ser movido a otro computador (no funcional).
3) Expired: Ha terminado el tiempo autorizado de la clave Trial o Temporal referenciada.
4) Registered: La clave está registrado y es funcional.
EndDate: Fecha en la que termina el periodo autorizado para claves Trial o Temporal.
Primary: Es True cuando se trata de una registración primaria. La primer registración que se hace para una clave en el OLM es la registración primaria, las siguientes que se hacen hasta completar el número de usuarios autorizados son secundarias.
DateBacked: Toma el mismo valor que la propiedad del mismo nombre. Es True si la fecha del sistema fue retrocedida a un punto anterior a la última vez que se ejecutó la aplicación. Ante esta situación Ud. debería suspender la ejecución del programa o ejecutar el método OnlineCheckDate() que compara la fecha del sistema con la obtenida desde internet.
TooManyInstances: Es True cuando la cantidad de instancias de la aplicación superó el máximo de instancias establecido en el campo Instances. Ante esta situación Ud. debería suspender la ejecución del programa.
Key: La clave de registración correspondiente al Index pasado como parámetro en el método GetKeyData().
Primary ICode: Checksum del InstallCode de la registración primaria. Solo tiene sentido para registraciones secundarias.
Primary Installcode: InstallCode de la registración primaria. Solo tiene sentido para registraciones secundarias. Este código y el del punto anterior se guardan junto a la clave registrada para a fin de validar la registración comparandolo con el valor ICode (checksum) incluido en la clave. Vea en la figura de abajo en mayor detalle como se conforman los datos de una registración secundaria:
Al momento de realizarse la registración se concatenan la clave de registración con el InstallCode proveniente de la registración primaria y el Installcode proveniente de la computadora local. Luego se encripta fuertemente y se guarda con los datos de registración en el disco local.
En la figura vemos las comparaciones que se efectúan, ambas son necesarias porque si no incluyeramos el InstallCode local un usuario podría copiar de un computador a otro estos datos y el nuevo computador quedaría registrado, la segunda comparación evita esto ya que en el nuevo computador el InstallCode cambia.
Para una registración primaria ambos InstallCode son idénticos y deben coincider con el del computador. Además junto a los datos que se muestran arriba se guardan dos campos de un solo caracter cada uno que pueden ser 'Y' o 'N' representando valores booleanos, el primero "Moved" para indicar si la clave fue marcada para ser movida y el Segundo "Primary" para indicar si se trata de una registración primaria o secundaria. Vea también el método GetKeyData().
LOS DATOS LOCALES DE REGISTRACION
AVlock SIMPLE guarda información en el computador donde se instala la aplicación, a esta información la llamamos DATOS DE REGISTRACION y la clasificamos en dos secciones: DATOS DE LA APLICACION y DATOS DE LAS CLAVES.
Esta información se guarda fuertemente encriptada en un fichero cuyo nombre es calculado en base a la propiedad AppID y guardado en una carpeta determinada por la propiedad RegFilePath. Un ejemplo podría ser el fichero 'FG5U2LVM.avr' ubicado en la carpeta C:\Document and Settings\All Users\Application Data\avlocks3
que es el lugar donde guardan los datos los programas ejemplo. Un ejemplo del contenido de este fichero es el siguiente:
[FG5U2LVM]
ad=FC740586F92FEDE5C5ADC86F417747AE3ABAC6F080EF58F97DFE1145F5498303CFEB5738E1F54524B45FF89DBD82B23EA3FEE52840D5F3592255ACFBA653C12B
0=9F8C6F3A53E4D73DF1DC826A99208161D0C123AFCBF016CDC6CF6C72538C9126EBCD01845D8712B6A6056DBE6DA050E8B6F408AA2CFE6AA5F1109C5B9F038AD44C1F16F73F60051137A214FBDDE4E618BD60E8FE13F20B95A98687EBA1AFE436
a) DATOS DE LA APLICACION
En esta sección se guardan algunas de las propiedades del componente para ser recuperados y utilizados oportunamente por el mismo componente y en forma especial por la utilidad RegMonitor.
Un ejemplo del contenido de esta sección es el siguiente:
ad=FC740586F92FEDE5C5ADC86F417747AE3ABAC6F080EF58F97DFE1145F5498303CFEB5738E1F54524B45FF89DBD82B23EA3FEE52840D5F3592255ACFBA653C12B
La entrada comienza con 'ad' (application data).
Los datos guardados en esta sección son los siguientes:
RandomCode: (corresponde a la propiedad RandomCode)
Solo aplicable cuando está activado Random_Number en la propiedad InstallCodeSources. Es un número aleatorio calculado cuando la aplicación se ejecuta por primaera vez y que interviene en el calculo de la propiedad InstallCode.
OtherCode: (Corresponde a la propiedad OtherCode)
Solo aplicable cuando está activado Other_Source en la propiedad InstallCodeSources. Es un numero que se debe asignar en tiempo de ejecución al iniciar el programa. Vea más detalles en el tópico Propiedades.
ICSrc : (Corresponde a la propiedad ICSources)
Es una representación en formato string de 5 dígitos de la propidead InstallCodeSources Ejemplo: '10100'. Cada dígito (0/1) indica si la fuente representada está activa o no. Vea más detalles en el Topico Propiedades.
UserName : Nombre del usuario (Corresponde a la propiedad UserName).
Company : Compañía (empresa) del usuario (Corresponde a la propiedad Company)
Email : Email del usuario (Corresponde a la propiedad Email.
AppName : Nombre de la aplicación (Corresponde a la propiedad AppName)
AppVersion : Versión de la aplicación (AppVersion)
b) DATOS DE LAS CLAVES
Para cada clave registrada en la aplicación existe una entrada dentro de esta sección. Cada clave está identificada por su número de clave (Index 0..254). Por ejemplo, la siguiente es una entrada correspondiente a la clave 0.
0=9F8C6F3A53E4D73DF1DC826A99208161D0C123AFCBF016CDC6CF6C72538C9126EBCD01845D8712B6A6056DBE6DA050E8B6F408AA2CFE6AA5F1109C5B9F038AD44C1F16F73F60051137A214FBDDE4E618BD60E8FE13F20B95A98687EBA1AFE436
Los datos guardados aquí para cada clave son los siguientes:
RegKey : Clave de registración. Ejemplo: 4F5D5H9-RK7CEVW-1G49YFJ-NK10FNT
Moved : Es 'Y' cuando el módulo fue marcado para ser movido a otro computador y 'N' para una registración normal.
Primary : Es 'Y' para una registracion Primaria y 'N' para una registración Secundaria.
Installcode : Corresponde a la propiedad Installcode local. Ejemplo: DF8ACE-DC468A-4561A5-FD2D61
InstallCode Primario : En instalaciones Secundarias corresponde al Installcode de la registración primaria de la cual depende y en registraciones Primarias coincide con la propiedad Installcode local.
LOS DATOS DE REGISTRACION REMOTOS (OLM)
Si Ud. utiliza el Online Licence Manager (OLM) para registrar a sus usuarios, también tendrá allí en la base de datos MySQL correspondiente, informacion sobre las aplicaciones registradas, los usuarios y las claves registradas.
Para cada clave registrada tendremos al menos un registro dentro del OLM para su registración primaria y registros adicionales secundarios para los usuarios asociados a la registracion primaria hasta completar la cantidad de usuarios autorizados. Los datos que se guardan en cada registro son los siguientes:
DATOS IDENTIFICATORIOS
APPID : Propiedad AppID del componente.
APPNAME : Nombre de la aplicación.
ICSUM : Suma de chequeo del InstallCode.
ICODE : Installcode.
ICODEP : InstallCode del computador primario. ICODE e ICODEP son idénticos para una registración primaria.
MODULE : (Index) Numero identificatorio de la clave (0..254)
USERNAME : Nombre del usuario.
COMPANY : Empresa (Compañía) del usuario.
EMAIL : Email del usuario.
DATOS A USAR PARA GENERAR UNA NUEVA CLAVE O CAMBIAR EL ESTADO DE REGISTRACION
STARTDATE : fecha de inicio del periodo autorizado
DAYS : Días del periodo autorizado
USERS : Numero de usuarios autoizados
INSTANCES : Numero máximo de instancias de la aplicacion ejecutandose simultaneamente.
VALS : Se corresponde con el campo Values guardado en la clave de registración y obtenido después como uno de los datos del modulo por el método GetModule().
EXTEN : Se hace igual a 'Y' para autorizar al usuario a extender su periodo de evaluación (Trial).
PAID : (pagado) Se hace igual a 'Y' para autorizar al usuario a registrarse con una nueva clave después de haber realizado el pago.
MOVED : El registro ha sido marcado para ser movido a otro computador.
DATOS DE LA ULTIMA REGISTRACION VIGENTE
PRIMAR : Pertenece a una registración primaria.
LASTKEY : Ultima clave registrada.
KIND : Tipo de clave (0=Trial, 1=Temporal, 2=Permanente)
KEYDATE : Fecha de la última clave registrada.
QUE HACER CON LOS DATOS?
Ya vimos someramente los datos que maneja el componente y donde estos se guardan a saber: En el computador donde se instala el programa, Los DATOS LOCALES y en el sitio de internet en el OLM, Los DATOS REMOTOS. A continuación veremos como se manejan estos datos y cuales son los métodos (funciones y procedimientos del componente) que utilizamos para manejarlos. A continuación describimos los más relevantes:
LOS METODOS WRITEAPPDATA() y WRITEKEYDATA()
El método WriteAppData() toma los datos de registración de la aplicación desde las propiedades del componente AVLock SIMPLE y los escribe en el fichero de datos *.avr en el disco local.
El método WriteKeyData() toma como parámetro la clave de registración correspondiente a un módulo y la escribe junto a otros datos del componente en el fichero de datos .avr en el disco local.
Para mayor información vea arriba los apartados 1.LA APLICACION Y EL COMPONENTE y 2. LOS DATOS DE REGISTRACION.
LOS METODOS READAPPDATA() y GETKEYDATA()

|
.
|
El método ReadAppData() lee los datos de registración de la aplicación desde el fichero de datos .avr en el disco local y los asigna a las propiedades del componente AVLock SIMPLE.
El método GetKeyData() lee los datos de registración de una clave contenidos en el fichero .avr del disco local y los asigna a una variable tipo TKeyData que consiste en un registro (record) cuyos campos se llenan con la información obtenida.
Veamos con mayor detalle estos campos. Desde un punto de vista práctico se puede considerar a AVLock SIMPLE como una caja negra dentro de su aplicación a la que Ud. le puede enviar preguntas y obtener respuestas. Por ejemplo puede utilizar el método GetKeyData() para consultar sobre el estado de un módulo dado. En el ejemplo consultamos sobre la clave de indice 0.
Con AVLock SIMPLE podemos manejar hasta 254 claves distintas para la misma aplicación, aunque dificilmente lleguemos a necesitar tantas. Para empezar con una sola podemos controlar la aplicación iniciando un periodo de prueba (Trial) cuando esta se ejecuta por primera vez y después cada vez que se inicia el programa utilizar GetKeyData() para consultar los datos de la clave y mostrar el mensaje adecuado y permitir que el usuario siga utilizando el programa o bloquearlo si el tiempo de uso ha expirado o se haya atrasado la fecha del sistema o la cantidad de instancias concurrentes haya superado el máximo permitido.
En la versión 3 se agregó el campo Values, este puede ser muy util para simplificar la utilización de AVLock SIMPLE permitiendo controlar con una sola clave la aplicación principal y activar/desactivar varias opciones y funcionalidades en su aplicación. Puede ver un ejemplo de como hacerlo en los Ejemplos 3,4,5,6 y 7. Ahora con esta nueva característica solo en raras ocasiones necesitará utilizar más de una clave en su aplicación.
En los ejemplos mencionados podrá ver estos datos con mayor detalle mediante el botón [Show Registration Data].
QUE ES UNA CLAVE GENERICA?
Normalmente una clave solo sirve para registrar la aplicación en el computador destino en el que el InstallCode coincide con el que introdujimos para calcular la clave, pero si se marca la casilla de chequeo "Generic Key" se generará una clave genérica que servirá para registrar la aplicación en cualquier computador, pero está limitado a la versión, si esta se cambia, la clave ya no funcionará. Este tipo de clave puede ser útil cuando se necesita registrar usuarios en forma masiva pero en la generalidad de los casos no es recomendable por el riesgo que implica.
He tratado de que esta ayuda sea lo más clara y completa posible, sin embargo es posible que hayan quedado aspectos sin considerar. Si Ud. nota que falta algo o ha encontrado errores o tiene alguna idea que podría ser útil para mejorar esta ayuda, por favor hágamelo saber.
|
Alcides Valega
Autor de AVLock SIMPLE
|
|