Identificar máquina em java

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…

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.

[quote=SpyJavDev]Obrigado pela dica, vou dar uma olhada, mas a principio estou procurando uma solução de baixo custo. [/quote]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: