Ver Mensaje Individual
  #5  
Antiguo 07-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 26
seoane Va por buen camino
Aunque poco mas se puede decir que lo que ya te dijeron, voy a poner un poco de código a la teoría.

Aquí te dejo tres funciones, la primera comprueba si el programa esta registrado, devolviendo TRUE si lo esta, colocala en las partes de tu programa en la que necesites comprobar si el programa esta registrado (al iniciar, al guardar, etc). La siguiente registra el programa pasándole como parámetro el código de registro, y la tercera genera el código de registro, esta evidentemente no la incluirás dentro de tu programa sino en un programa aparte que utilizaras para generar los códigos cuando el cliente pague.

El parámetro Ident que aparece en las tres funciones tiene los siguientes usos. Si es un valor constante todos tus programas tendrán el mismo código de registro, pero puede ser el nombre del usuario o el numero de serie del disco duro, por ejemplo. En el primer caso para cada usuario se generaría un código diferente y en el segundo habría que generar un código diferente cada vez que el programa se instalase en un equipo diferente.

Código Delphi [-]
uses Registry;

const
  Clave = 1978;

function Cifrar(Texto: string; Clave: Longint): string;
var
  i: integer;
begin
  Result:= '';
  RandSeed:= Clave;
  for i:= 1 to Length(Texto) do
    Result:= Result + IntToHex(Byte(Texto[ i ]) xor Byte(Random(256)),2);
end;

function EstaRegistrado(Ident: string): boolean;
begin
  Result:= FALSE;
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('\SOFTWARE\TuAplicacion',FALSE) then
    begin
      if ValueExists('Reg') then
        if ReadString('Reg') = Cifrar(Ident, Clave) then
          Result:= TRUE;
      CloseKey;
    end;
  finally
    Free;
  end;
end;

function Registrar(Ident: string; Codigo: string): boolean;
begin
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('\SOFTWARE\TuAplicacion',TRUE) then
    begin
      WriteString('Reg',Codigo);
      CloseKey;
    end;
  finally
    Free;
  end;
  Result:= EstaRegistrado(Ident);
end;

function GenerarCodigo(Ident: string): string;
begin
  Result:= Cifrar(Ident, Clave);
end;

La funcion Cifrar se utiliza como un generador de Hash pero puede sustituirse por cualquier algoritmo mejor, md5 por ejemplo.
Responder Con Cita