2011-03-27 4 views
1

Je construis une application de bureau Java, et j'aimerais pouvoir identifier de manière unique la machine sur laquelle le code est actuellement exécuté. (Il n'a pas besoin d'être des données personnelles, il doit seulement être capable de distinguer une machine d'une autre, et être sûr que cela ne changera pas si la machine reste la même, à moins d'une réinstallation du système d'exploitation). , ce serait indépendant de la plateforme. Des conseils sur la façon de faire cela?Identifier la machine à partir d'une application de bureau Java?

+2

Par curiosité, pourquoi? – corsiKa

+1

Oui, pourriez-vous fournir plus d'informations sur pourquoi vous en avez besoin et quel est l'objectif final? Cela pourrait nous aider à formuler de meilleures recommandations sur la façon de le gérer. – jmichalicek

Répondre

0

Vous pouvez demander à l'application de créer un guid/uuid lors de son installation et de l'enregistrer dans un endroit où utiliser cet identifiant unique. Jetez un oeil à java.util.UUID pour les créer en Java.

+0

Il ne serait pas installé, ce serait un JAR qui est exécuté. Si le pot a été téléchargé et exécuté à nouveau, je voudrais qu'il détecte que la machine est la même. –

+0

Vous pouvez toujours enregistrer cet uuid quelque part en local sur l'ordinateur et le vérifier lorsque l'application s'exécute et voir ce que l'uuid est s'il existe, sinon le créer. Il y a un risque qu'ils suppriment le fichier si ce n'est pas dans un environnement contrôlé, mais il y a très peu de façons de le faire que l'utilisateur ne peut absolument pas faire à cause de changements sur son ordinateur dans un environnement incontrôlé. – jmichalicek

0

Réponses à this SO question suggest many approaches. La suggestion la plus courante consiste à utiliser l'adresse MAC. D'après ce que je peux dire, il ne semble pas y avoir un moyen fiable à 100% - je pense que vous devrez faire un appel sur la façon dont vous avez besoin de suivre les utilisateurs qui reviennent et combien d'effort vous voulez consacrer à la mise en œuvre cette fonctionnalité.

1

Vous pouvez utiliser l'adresse MAC de votre matériel réseau. Habituellement, cela survivra même aux réinstallations du système d'exploitation.

Je l'ai fait il y a quelques années lorsque j'ai écrit mon propre logiciel de gestion de laboratoire pour l'automatisation des tests, et que je devais identifier les machines de manière unique. Ils ont saisi un script à partir d'un partage réseau connu, avec le nom de fichier correspondant à leur adresse MAC. Je l'ai fait parce que je testais la configuration du système d'exploitation et que mon système d'automatisation devait survivre aux redémarrages.

Cet exemple semble montrer comment faire cela. Je ne l'utilise Java, cependant, donc je ne peux pas vous dire si elle est de style ancien, ou il y a une meilleure façon de le faire:

http://www.kodejava.org/examples/250.html

Sachez cependant que si vous cherchez à résoudre un problème lié à l'octroi de licences de logiciels, ce n'est en aucun cas une solution anti-piratage. En fait, vous pouvez usurper n'importe quel identifiant matériel unique.

+0

Cela suppose que le nic ne soit pas changé et que le même nic est toujours sélectionné s'il y a plusieurs nics. Ne pas dire que c'est une mauvaise idée, toutes les options que je peux penser ont un moyen que l'utilisateur peut faire un changement et bousiller les choses. Assurez-vous juste qu'il est noté dans le cas où le PO va cette route. – jmichalicek

+0

@jmichalicek: Je suis entièrement d'accord. Si cela doit être infaillible ou «impossible à contrecarrer», il devra choisir une autre option, comme exécuter son logiciel en tant qu'application Web et utiliser l'authentification de l'utilisateur. –

+0

Très, très facile à usurper des adresses MAC. –

Questions connexes