Frage

Was ist der beste Weg, um eine eindeutige Hardware-ID auf Microsoft Windows mit C ++ zu generieren, die nicht leicht fälschbare (mit zum Beispiel der Änderung der MAC-Adresse) ist?

War es hilfreich?

Lösung

Fenster speichert eine eindeutige Guid pro Maschine in der Registrierung unter:

HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MachineGuid

Andere Tipps

Dieses verwendet die CPU-Seriennummer zu sein, aber heute gibt es viele Arten von Motherboards und dieser Faktor ist nicht korrekt. MAC-Adresse kann leicht gefälscht werden. Das lässt uns mit der internen Festplatte Seriennummer. Siehe auch: http: //www.codeproject. com / Artikel / 319.181 / Haephrati-Searching-for-a-zuverlässig-Hardware-ID

Es gibt eine Vielzahl von „Tricks“, aber die einzige wirkliche „physische Antwort“ „Nein, es gibt keine Lösung“.

Eine „Maschine“ ist nichts anderes als ein passiver Bus mit einigem Hardware-Umgebung. Obwohl jedes Stück Eisen eine irgendwie verwendbare Kennung zur Verfügung stellen kann, kann jedes Stück Eisen durch einen für was auch immer schlecht oder guten Grund Benutzer ersetzt werden kann man nie voll bewusst sein (also, wenn Sie Ihre Funktionalität auf dieser Basis erstellen Sie Probleme zu Ihrem Benutzer und damit -Als consequence- sich jedes Mal, wenn eine Hardware ersetzt werden müssen / Reinitialized / rekonfiguriert usw. usw.).

Nun, wenn Ihr Problem eine Maschine in einem Kontext identifizieren, wo viele Maschinen haben zwischen arbeiten zusammen, ist dies eine Rolle auch von MAC- oder IP-Adressen oder Hostnamen gespielt. Aber auf die Idee vorbereitet werden, dass sie auf lange Zeitperiode nicht notwendigerweise konstant sind (so vermeiden zu hart Code sie - statt „entdecken dann“ auf alle Ihre Start-up)

Wenn Ihr Problem ist es, eine Software-Instanz oder eine Lizenz -instead- zu identifizieren, haben Sie wahrscheinlich besser auf eine andere Art von Lösung zu konzentrieren: Sie Lizenzen auf „Benutzer“ verkaufen (es ist der Benutzer, der das Geld hat, nicht seinen Computer !), nicht auf ihre „Maschinen“ (dh Benutzer, wann immer sie müssen frei sein zu ändern, ohne Ihre Erlaubnis benötigen / wie, da Sie die Hardware-Lizenz oder die OS din't ...), ist daher um Ihr Problem zu identifizieren keine Maschine, sondern ein USER (beachten Sie, dass eine gleiche Maschine ein Host für viele Anwender sein kann und dass ein gleicher Benutzer kann auf einer Vielzahl von Maschinen arbeitet ... Sie können nicht davon ausgehen, / verhängen eine 1: 1-Beziehung, ohne in irgendeine Art läuft Probleme früher oder später, wenn dieses Idiom ifs auf nicht mehr fit zu finden).

Die Idee sollte sein, die Benutzer in einer etwas erreichbar Website zu registrieren, gibt ihnen Schlüssel Sie erzeugen und prüfen, ob ein gleichen Benutzer / Schlüsselpaar wird unter einem bestimmten Zeitraum nicht con-zeitweilig mehr als eine vereinbarten Anzahl von Malen verwendet . Bei Verletzungen überschreiten, oder Schlüssel wird alt, nur blockieren und warten, bis der Benutzer zu erneuern.

Wie Sie sehen können, hängt die Antwort meist auf dem Grund für Ihre Frage, mehr als von der Frage selbst.

Es gibt verschiedene IDs Hardware zugeordnet, die gelesen werden können und kombiniert, um eine Maschine Schlüssel zu bilden. Zum Beispiel könnten Sie die ID der Festplatte, wo die Software gespeichert ist, die proc-ID usw. Einige von ihnen können als andere leichter eingestellt werden, aber ein Teil der Stärke ist es, mehrere Stücke zusammen in Kombination, die nicht notwendigerweise stark genug, um sich selbst.

Hier ist ein Programm (auch als DLL ), der lesen kann, und zeigen Sie Ihren Computer / Hardware-ID: http: //www.soft.tahionic.com/download-hdd_id/index.html

Verwenden Sie Win32-System HDS APIs. Die Registrierung nicht lesen, es hat überhaupt keinen Sinn.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top