Alternative zur Serienplatine für eindeutige Kennung?

370
Arya

Ich muss eine ID verwenden, die eindeutig ist, um einen PC zu identifizieren, selbst nachdem das Betriebssystem neu geladen wurde. Nach einigen Recherchen zur Ermittlung der besten eindeutigen Kennung entschied ich mich für die Seriennummer des Motherboards. Auf meinem Rechner gibt es jedoch Null für die Seriennummer zurück. Gibt es eine andere eindeutige Kennung, die ich neben der MAC-Adresse verwenden kann?

PS C:\Users\user\Desktop> wmic baseboard get product,Manufacturer,version,serialnumber Manufacturer Product SerialNumber Version LENOVO LENOVO NONE NONE 
0

2 Antworten auf die Frage

1
harrymc

Ich schlage vor, einen Blick auf den Code Project-Artikel zum
Generieren des eindeutigen Schlüssels (Fingerabdruck) für einen Computer zu Lizenzierungszwecken zu werfen .

Dort finden Sie den Code in C #, der vom Autor gefunden wurde und den er selbst für seine Lizenzierungsanforderungen verwendet.

Der Autor listet diese sehr sinnvollen Punkte auf:

  • Generieren Sie einen Schlüssel nur von der Hauptplatine, dem Prozessor und dem BIOS, da der Benutzer diese Teile normalerweise nicht ändert.
  • Verwenden Sie keine MAC-ID, Grafikkarten-ID UND Disk-ID, da diese Geräte häufig gewechselt werden.
  • Es dauert viel Zeit, um IDs von Geräten zu erhalten. Machen Sie also die Fingerabdruck-Generierungsfunktion statisch und speichern Sie sie in einer statischen Variablen, sodass der Schlüssel nur einmal in der gesamten Anwendung generiert wird.

In Bezug auf die als null zurückgegebene Seriennummer des Motherboards ist dies eine andere Sache, die weitere Untersuchungen verdient. Möglicherweise funktioniert der in diesem Artikel enthaltene Code besser, oder die CPU und der Datenträger sind möglicherweise dort, wo die Serienplatine des Motherboards nicht verfügbar ist.

Ich stelle fest, dass Sie keine Funktion benötigen, die Daten verwendet, die universell verfügbar sind, da andere Hardware möglicherweise nicht alle gewünschten Serien enthält. Alles was Sie brauchen, ist die Verkettung von Daten aus einer Reihe von Quellen, wobei die nicht verfügbaren Daten übersprungen werden, und Sie müssen sich ziemlich sicher sein, dass die gesamte Fingerabdruckzeichenfolge der verfügbaren Fingerabdrücke ziemlich eindeutig ist.

Entschuldigung, Ihre Antwort erschien, als ich meine schrieb und überprüfte. Vielleicht wissen Sie, ob die UUID eine gute Lösung ist. AFH vor 6 Jahren 0
@AFH: UUID ist in der Regel ziemlich eindeutig, es sei denn, sie wird selbst generiert, aber von was UUID? harrymc vor 6 Jahren 0
Es ist in den Systeminformationen enthalten, zusammen mit einer _system_-Seriennummer (die nicht auf einem meiner Laptops definiert ist). AFH vor 6 Jahren 0
@ AFH: Ich weiß es nicht, aber es könnte eine Alternative sein, wo es gefunden werden kann. Das Poster benötigt keine serielle Funktion, die universell verfügbare Serien verwendet, nur eine Funktion, die einen bestimmten Computer mit einem Fingerabdruck belegt. harrymc vor 6 Jahren 0
Der Wert wird mit "wmic csproduct get uuid" zurückgegeben, gemäß [this link] (https://www.nextofwindows.com/how-to-find-out-out-bios-motherboard-und-ppu-info-from-command -Linie). Wenn es im Allgemeinen implementiert ist, ist es eine direktere Lösung als das Erstellen und Speichern eines zusammengesetzten Bezeichners. AFH vor 6 Jahren 1
@ AFH: Dies scheint das BIOS zu sein, und ich würde nicht wetten, dass es nach einem BIOS-Update allgemein verfügbar ist oder nicht geändert wird oder etwas anderes als diese BIOS-Version identifiziert. Ich denke, das Poster sollte den Fingerabdruck durch Verketten von Werten aus einer Liste erstellen und nur diejenigen überspringen, die nicht funktionieren. harrymc vor 6 Jahren 0
Warum erstellen Sie nicht einfach eine eigene UUID? Jamie Hanrahan vor 6 Jahren 0
0
AFH

Die Seriennummer des Motherboards ist eine gute Kennung, die jedoch nicht von allen Herstellern in Firmware kodiert wird .

Die MAC-Adresse ist in Ordnung, aber welche? Ein Laptop kann über Ethernet, WLAN an Bord oder USB-WLAN angeschlossen werden, um die Leistung zu verbessern.

Es gibt eine System-UUID, die per Definition eindeutig ist, aber ich kann nicht sicher sein, ob sie universell implementiert ist.