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?
Répondre
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.
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. –
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
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é.
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.
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
@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. –
Très, très facile à usurper des adresses MAC. –
Utilisez l'adresse MAC de l'ordinateur. C'est déjà un identifiant (un peu) unique.
Cette blog has some details with a UUID classe (pas le même que java.util
)
- 1. application de bureau java
- 2. Application de bureau en Java
- 3. Identifier Bluetooth NetworkInterface à partir de Java?
- 4. Application Web Java ou application de bureau Java
- 5. Application de bureau Java plus base de données plus Internet
- 6. .NET - comment identifier le type de machine (ordinateur portable/bureau) et le type d'écran (CRT/LCD)
- 7. Comment identifier BigDecimal à partir de Double en Java
- 8. Comment identifier le moniteur à partir de l'application Java Swing?
- 9. Comment distribuer une application de bureau Java?
- 10. invocation de la machine virtuelle à partir du programme Java
- 11. Programme d'installation pour application de bureau Java
- 12. Application animée de bureau en Java
- 13. Comment autoriser les applications de bureau à invoquer des méthodes sur une application Java sur la même machine
- 14. Application de bureau Java pour l'accès à Google+
- 15. Appel d'une nouvelle machine virtuelle Java à partir d'une machine virtuelle Java existante
- 16. application de bureau mutualisées
- 17. Envoyer un SMS à partir d'une application de bureau
- 18. Orientation Windows 8 à partir d'une application de bureau
- 19. Comment identifier de façon unique une application de bureau faisant une demande à mon API?
- 20. application de bureau à partir du navigateur Web
- 21. Application de bureau pour youtube (Connexion et mise à jour de profil à partir d'une application de bureau)
- 22. Impression native Mac OS X à partir d'une application de bureau Java
- 23. Comment puis-je utiliser le pipelining http 1.1 à partir d'une application Java de bureau (J2SE)?
- 24. Objective C + Java dans une application de bureau autonome
- 25. Exécuter la méthode principale Java à partir d'une application Java dans une JVM différente
- 26. Client SQL sur la machine client pour l'application de bureau
- 27. Identifier les variables Java à partir d'ANTLR AST
- 28. Lancer une application java webstart à partir d'une application java
- 29. Lancer une application Java à partir d'une autre application Java
- 30. Connexion à CICS à partir de l'application de bureau Windows
Par curiosité, pourquoi? – corsiKa
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