Instalei um sistema para desktop em duas máquinas para um cliente… negociei com ele por duas licenças…uma para cada pc…
Hoje fui lá no estabelecimento prestar assistencia…quando cheguei lá… o cara tinha compartilhado o diretório de instalação do sistema e estava executando numas 4 máquinas…kkkk…é malandragem…tudo pra não pagar assistencia para instalação e mais duas licenças
O que gostaria de saber é o seguinte…
Tem como eu verificar no meu sistema se foi instanciado por outro computador…pra mim cortar a alegria dele?
cara uma opção é o cara fazer login apartir de uma base de dados você adiciona um campo chamado logado ai quando o usuario loga esse campo fica ativo e outro não pode acessar com o mesmo login.
caso isso não aconteça tenta pegar o numero do processador executando ou então coloca um xml ou um arquivo de configuração na maquina que sete a opção 1 caso o usuario ja esteja logado.
caso queira pegar o numero do processador para fazer a comparação faça isso.
Atualmente no sistema eu tenho uma tabela de terminais que estão em utilização no sistema…ex terminal1 terminal2…
Então seguindo a idéias passadas eu criaria uma nova coluna nessa tabela de terminais para informar o nr do processador
SE o numero não bater…ele avisa… estaria correto…
Mas a questão seria a seguinte… no caso de o usuário abrir num outro computador pelo diretório compartilhado…essa instancia iria pegar o número do processador de qual máquina…?? da máquina que está o sistema ou da máquina que está instanciando?
Seu problema é o método de licenciamento - você teria de ter negociado uma “site license”
Isto posto, você pode usar alguma coisa que veja se no máximo 2 estações estão sendo executadas simultaneamente. Quando a 3a. se logar, isso é violação da licença. Isso é mais chato que parece (sempre dá algum problema).
Seria a solução mais simples, rápida e eficiente ao meu ver.
Mas me diz uma coisa, o que você fez quando viu a falcatrua? Falou pro cliente que não podia ou teve que engolir essa?[/quote]
Cara…me passou mil coisas pela cabeça…pensei em falar…em chingar…em falar com educação…pensei no tempo que levei fazendo o sistema pra depois um cara vim e tentar me passar a perna… também pensei depois nas consequencias…ex…se eu falasse com muita “energia”…poderia até acabar perdendo o cliente…
Então resolvi deixar quieto…fazer que não vi… pois…sabe como é…as vezes a gente exaltado fala coisa que não deve… mesmo tendo a razão… E minha idéia é continuar com o cliente…
mas agora quero fazer uma trava e atualizar o sistema pela internet… pois fiz um mecanismo de auto atualização… então quando atualizar…as máquinas que estão licenciadas vão funcionar…e as outras não…he he he
Seria a solução mais simples, rápida e eficiente ao meu ver.
Mas me diz uma coisa, o que você fez quando viu a falcatrua? Falou pro cliente que não podia ou teve que engolir essa?[/quote]
Cara…me passou mil coisas pela cabeça…pensei em falar…em chingar…em falar com educação…pensei no tempo que levei fazendo o sistema pra depois um cara vim e tentar me passar a perna… também pensei depois nas consequencias…ex…se eu falasse com muita “energia”…poderia até acabar perdendo o cliente…
Então resolvi deixar quieto…fazer que não vi… pois…sabe como é…as vezes a gente exaltado fala coisa que não deve… mesmo tendo a razão… E minha idéia é continuar com o cliente…
mas agora quero fazer uma trava e atualizar o sistema pela internet… pois fiz um mecanismo de auto atualização… então quando atualizar…as máquinas que estão licenciadas vão funcionar…e as outras não…he he he[/quote]
Acho que foi melhor deixar quieto mesmo. Quando for possível, faz essa atualização mesmo.
Pergunta basica: nao tem como voce mudar a licenca? Talvez aumentando um pouco o valor e permitindo rodar em quantas maquinas quiser? Ou diferenciando licenca de execucao (qtas maquinas quiser) e assistencia (por maquina)?
Qualquer implementacao sugerida aqui provavelmente vai:
te dar mais trabalho;
penalizar usuarios legitimos (ex.: qdo trocarem computador/IP etc), colaborando ainda mais com item 1.
Na solução que eu dei, não irá penalizar, iria liberar apenas 2 logados por vez.
Com isso, se ele sair de uma máquina e for para outra, vai estar numa boa. [=[/quote]
mas como ficaria isso? pelo que eu entendi isso não impediria de ter a aplicação em duas maquinas, apenas de estar logado em duas máquinas “ao mesmo tempo”.
eu sugeriria verificar várias coisas, inclusive lógica e fisica, como id do processador, do disco, chave de registro do SO, ip, mac adress… enfim, e caso mudasse apenas uma até permite e atualiza o valor mas caso mude tudo ou quasse tudo bloqueie…
Na solução que eu dei, não irá penalizar, iria liberar apenas 2 logados por vez.
Com isso, se ele sair de uma máquina e for para outra, vai estar numa boa. [=[/quote]
mas como ficaria isso? pelo que eu entendi isso não impediria de ter a aplicação em duas maquinas, apenas de estar logado em duas máquinas “ao mesmo tempo”[/quote]
Exato. Eu sempre gosto de optar pelo mais simples.
Ele não pagou para usar em dois lugares? Deixa usar uai. Se o cara formatar o pc, muita coisa pode mudar, c ele trocar o hardware ou comprar máquinas novas… e assim vai.
Bem, mas é gosto meu. Eu entendo sua preocupação em validar tudo que é necessário e concordo com sua abordagem também. [=
/**
*Se retornar true é remoto senão retorna false
**/
public boolean verificaSeRemoto()
String caminho = System.getProperty("user.dir");
if (caminho.substring(0,2).equals("\\")){
return true;
}
else if (caminho.indexOf("smb:") != -1){
return true;
}
else
return false;
}
fiz um teste aqui e funcionou… a idéia é verificar o caminho da instância se é remota ou não… fiz o mais simples possível
Não sei se seria o correto… aceito sugestões
//se for instancia remota então avisa e finaliza
if (verificaSeRemoto()){
JOptionPane.showMessageDialog(null,"Erro!\nObjeto instanciado remotamente!\nO sistema será finalizado!","Sistema",JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
você pode criar um mecanismo de “licença flutuante”. assim como o Autocad da Autodesk.
o cliente pagará por licença, poderá instalar o aplicativo onde desejar e criar quantos usuário quiser - com perfis diferentes, por exemplo. mas você validará quantos usuários estão utlizando o aplicativo ao mesmo tempo.
crie um mecanismo que, ao usuário abrir o aplicativo ou tentar efetuar login, ele faça uma consulta banco de dados ou arquivo de licenças (localizado num servidor).