Génération d'un ID de matériel sous Windows
Quelle est la meilleure façon de générer un unique ID de matériel sur Microsoft Windows avec C++ qui n'est pas facilement spoofable (avec par exemple le changement d'Adresse MAC)?
source d'informationauteur Patrick Glandien
Vous devez vous connecter pour publier un commentaire.
Windows stocke un Guid unique par machine dans le registre:
Cette habitude d'être le numéro de série du CPU mais aujourd'hui, il existe de nombreux types de cartes mères et ce facteur n'est pas exacte. L'adresse MAC peut être facilement falsifiés. Cela nous laisse avec le disque dur interne de numéro de série. Voir aussi: http://www.codeproject.com/Articles/319181/Haephrati-Searching-for-a-reliable-Hardware-ID
Il existe une variété de "trucs", mais la seule vraie "physique de la réponse est" non, il n'y a pas de solution".
Une "machine" n'est rien de plus qu'un passif de bus avec un peu de matériel autour de.
Bien que chaque morceau de fer peut fournir un utilisable en quelque sorte de l'identificateur de chaque morceau de fer peut être remplacé par un utilisateur pour une mauvaise ou une bonne raison pour laquelle vous ne pouvez jamais être pleinement conscient de (si vous avez la base de votre fonctionnalité sur ce, vous créer des problèmes pour votre utilisateur, et donc -par conséquent - à vous-même chaque fois qu'un matériel doivent être remplacés /réinitialisation /reconfiguré etc. etc.).
Maintenant, si votre problème est d'identifier une machine dans un contexte où de nombreuses machines à inter-opérer ensemble, c'est un rôle joué par les adresses MAC ou IP ou les noms d'Hôtes. Mais être préparé à l'idée qu'ils ne sont pas nécessairement constants sur une longue période de temps (donc d'éviter de coder en dur - au lieu de "découvrir ensuite" à tout de votre start-up)
Si votre problème est plutôt d'identifier une instance logicielle ou d'une licence, vous avez probablement préférable de se concentrer sur un autre type de solution: vous vendre des licences à des "utilisateurs" (c'est l'utilisateur qui a de l'argent, pas son ordinateur!), pas à leurs "machines" (que les utilisateurs doivent être libre de le modifier en cas de besoin/sans votre permission, puisque vous din pas permis, le matériel ou le système d'exploitation...), donc votre problème n'est pas d'identifier une machine, mais un UTILISATEUR (considérer qu'une même machine peut être un hôte de nombreux utilisateurs et qu'un même utilisateur peut travailler sur une variété de machines ..., vous ne pouvez pas supposer/imposer un rapport de 1:1 rapport, en évitant de tomber dans une sorte de problèmes tôt ou tard, lors de cet idiome ifs trouve à pas plus en forme).
L'idée doit être d'enregistrer les utilisateurs dans un peu accessibles du site, de leur donner les clés que vous générez, et vérifier qu'un même utilisateur/paire de clés n'est pas con-temporairement plus utilisé qu'un nombre de fois en vertu d'une période de temps donnée. Lorsque des violations dépasser, ou les touches devient vieux, il suffit de le bloquer et d'attendre que l'utilisateur renouveler.
Comme vous pouvez le voir, la réponse dépend principalement de la raison derrière votre question, plus que de la question elle-même.
Il existe différents Id de matériel qui peut être lu et combinées pour former une machine à clé. Par exemple, vous pouvez obtenir l'ID du disque dur sur lequel le logiciel est enregistré, la proc ID, etc. Certains de ces peut être réglé plus facilement que d'autres, mais une partie de la force est dans la combinaison de plusieurs morceaux qui ne sont pas nécessairement suffisamment forts par eux-mêmes.
Ici est un programme (également disponible en DLL) qui permet de lire et de montrer votre ordinateur/l'ID du matériel: http://www.soft.tahionic.com/download-hdd_id/index.html
Utiliser Win32 Système HDS Api.
Ne pas lire le registre, il n'a pas de sens.