Um jeito simples é usar um TXT em conjunto com o EXE. Um exemplo, que vc pode adaptar às suas necessidades:
1. crie uma variável no EXE, que vai ser o número serial dele, tipo SERIAL:='085010' (cliente número 085, EXE número 010).
2. no TXT, grave a string "0850101509113", encriptada de alguma forma, onde:
.085 = cliente
.010 = EXE
.150911 = vencimento
.3 = dígito de controle EAN13
3. o EXE, ao ser iniciado:
a) se o TXT não existir, QUIT.
b) se o TXT existir, lê e desencripta a string, confere o EAN13. Se EAN13 estiver errado, alguém mexeu no TXT. QUIT.
c) se EAN13 ok, confere o SERIAL. Se não for '085 010', compilado no EXE, QUIT.
d) se o vencimento for menor que date(), QUIT.
e) se o cliente pagou em dia, o TXT tá atualizado (vencimento futuro) e o EXE continua rodando.
4. A atualização do TXT, quando o cliente pagar, pode ser de várias maneiras, como por ex:
- vc gera um novo TXT e manda por email
- vc vai no cliente pegar a verba e transfere o novo TXT do seu pendrive pro PC.
- faz o EXE buscar o TXT atualizado em seu FTP (se houver).
- vc passa o código por telefone: o cliente roda uma opção no programa, a qual abre um SAY '085010" e um GET para ele entrar o novo vencimento e o EAN13 (encriptados). Essa rotina desencripta o que foi digitado, confere o EAN13 e, se estiver tudo ok, atualiza o TXT.
Do seu lado, é só vc criar um EXE pra gerar e guardar esses códigos encriptados.
Anexo, uma função que fiz pra encriptar strings (que só contenham A/Z e 0/9), sem limite de tamanho. Usei só letras minúsculas pra não confundir 0/0 (zero e "O"), 1/l (um e "L"), etc.
Exemplo:
mix("0850101509113","F") -> "34vnqfkg82h82"
mix("34vnqfkg82h82","A") -> "0850101509113"
mix("0850101609110","F") -> "0aitw50c6tz6t"
mix("0aitw50c6tz6t","A") -> "0850101609110"
Código: Selecionar todos
FUNCTION mix(quem,aaaa)
priv chave,t,cripto,x,y,chave2
chave="hda7f1gi2kj8qmbn3oerp4sz9uv5wcxt0y6"
if aaaa="F"
t=""
for x=len(quem) to 1 step -1
t=t+substr(quem,x,1)
next
quem=t
cripto=substr(quem,1,1)
for x=1 to (len(quem)-1)
y=at(right(cripto,1),chave)
chave2=substr(chave,y,len(chave))+substr(chave,1,y-1)
y=at(substr(quem,x+1,1),chave)
cripto=cripto+substr(chave2,y,1)
next
elseif aaaa="A"
cripto=""
for x=(len(quem)-1) to 1 step -1
y=at(substr(quem,x,1),chave)
chave2=substr(chave,y,len(chave))+substr(chave,1,y-1)
y=at(substr(quem,x+1,1),chave2)
cripto=substr(chave,y,1)+cripto
next
cripto=substr(quem,1,1)+cripto
t=""
for x=len(cripto) to 1 step -1
t=t+substr(cripto,x,1)
next
cripto=t
endi
retu cripto