Programa com validade

Ola, Alguem poderia me ajudar com um problema? estou fazendo um programa e nesse programa eu preciso que a cada determinado intervalo de tempo/dias o programa deixe de funcionar na maquina instalada, o problema é que se eu alterar a data do pc para uma anterior ao do vencimento o programa funciona normalmente.

codigo:

public class CMD {

public static boolean user(int ano, Month mes, int dia) {
    LocalDate hoje = LocalDate.now();
    boolean auxtmp = hoje.isBefore(LocalDate.of(ano, mes, dia));
    
    return auxtmp;
}

}

public class NewMain {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
  if(CMD.user(2020, Month.JULY,15)){// passo por parametro a data que é para vencer
      System.out.println("liberado");
  }else{
      System.out.println("expirado");
  }
}

}

O LocalDate.now(); recupera a data do sistema onde o seu programa está rodando. Para fazer o que vc quer, é preciso recuperar a data de outro lugar, ou seja, recuperar de algum serviço externo.

Você poderia disponibilizar um servidor para validar o acesso.
A cada vez que o programa abre, ele manda uma mensagem pro servidor e o servidor decide se ainda pode executar o sistema ou não, aí não vai fazer diferença se o usuário alterar o horário da máquina local, pois quem vai controlar o tempo será o seu servidor.

1 curtida

Desse jeito, pegando a data do computador local, caso o usuario altera continuará usando normalmente como bem já sabe, obter a data de fora atraves da internet vai depender de conexão.
Então… sujou.