Pessoal,
alguém sabe alguma rotina em java que consiga me obter um identificador único da máquina? algo do tipo id do processador ou da placa mãe…
Identificar máquina em java
10 Respostas
a maioria dos topico que encontrei o pessoal indica utilizar o macAddress. já tentei essa solução porém a forma como utilizei (NetworkInterface network = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()); ), o mac é diferente de acordo com o tipo de conexão, se for cabo é um, se for wireless é outra, se for 3G é outra e assim vai. Queria algo mais consistente com uma possibilidade menor de erro que o macAddress.
Camarada, com certeza se você deixar de preguiça e buscar no google, com certeza encontre.
Já fez isso?
já fiz.
Esse tipo de necessidade normalmente é para identificar se um usuário está logado em mais de uma máquina, é isso?
Ou é um esquema de proteção de software?
Note que há poucas coisas que sejam eficientes e que possam ser obtidas por um programa que roda em “user mode”, como é um programa normal em Java. Uma delas é o tal do MAC Address mesmo.
Uma coisa que você talvez gostaria de pegar é o número serial do HD (que é relativamente fácil de pegar em Linux, mas é bem mais difícil de obter em Windows), mas como de costume, nem sempre o programa está rodando com permissões suficientes.
Durante a instalação, você pode chamar algum programa em C que faça isso por você (até porque vai estar rodando com mais privilégios que o normal, durante a instalação), mas depois que o programa estiver instalado, fica mais difícil, devido às permissões do seu programa.
Cada CPU Intel tem um identificador único, mas a obtenção desse identificador normalmente é barrada durante a inicialização pela BIOS e na prática esse número é inútil (exceto se você olhar na tela da BIOS, mas isso não vem ao caso).
entanglement, preciso dessa solução para saber se a máquina está habilitada a utilizar o programa ou não. Tenho uma aplicação swing rodando na máquina e atualmente estou utilizando essa solução como você disse do MacAddress que foi a mesma que achei em outros topicos, porém, conforme disse em no post anterior, estou detectando uma série de falhas nessa API do java que obtém o Mac para este meu cenário de identificar a máquina. Atualmente minha aplicação ficará limita a máquina Windows, mas se eu achasse alguma solução independente de plataforma seria ainda melhor, mas momentaneamente apenas alguma pro Windows que realmente funcionasse já ajudaria muito.
Ou seja, é um esquema de proteção de software. O mais adequado, se você puder bancar o custo, é realmente usar uma chave USB:
Um exemplo - http://www.safenet-inc.com/
Obrigado pela dica, vou dar uma olhada, mas a principio estou procurando uma solução de baixo custo.
Obrigado pela dica, vou dar uma olhada, mas a principio estou procurando uma solução de baixo custo.Dê uma olhada também neste tópico que acredito que possa te ajudar: http://stackoverflow.com/questions/3443093/what-is-a-good-unique-pc-identifier
Veja aqui também: