Ich suche nach einem Wert, der für jeden Computer, der plattformunabhängig ist, einzigartig ist. Dies dient zum Registrieren von Computern bei einem Konto, sodass Sie sich nicht von Computern anmelden können, die nicht registriert sind. Ich möchte die MAC-Adresse nicht verwenden, da dies leicht geändert werden kann. Ich habe mich gefragt, ob ich vielleicht IDs von mehreren Hardwarekomponenten bekommen und kombinieren könnte, um eine eindeutige ID für die Maschine zu erhalten. Ich war mir jedoch nicht sicher, wie ich IDs von diesen Komponenten mithilfe von Java erhalten konnte. Ich habe etwas recherchiert und einen Weg gefunden, die CPU-Seriennummer abzurufen, aber das würde nur für Windows funktionieren, da es nur einen temporären Visual Basic-Befehl / Skript / was auch immer ausführt. Jede Information wird geschätzt, danke.
Sie haben recht, wenn Sie eine MAC-Adresse fälschen können. Es gibt keine Maschinen-IDs, die Sie nicht auf die eine oder andere Weise parodieren können. Aus diesem Grund ist die maschinenspezifische Identifikation generell eine schlechte Idee. Es ist eine noch schlimmere Idee mit Java, da der ganze Sinn von Java von der Hardware abstrahiert werden soll. Was wirklich nur die JVM und den Netzwerkstack übrig lässt, um Details zu erhalten.
Also die einzigen zwei Möglichkeiten, die ich sehen kann.
Zuerst könnten Sie versuchen, einen Hash einer Kombination aus Hostnamen, aktuellen Klassenpfaden, Systemeigenschaften und JVM-Werten zu generieren. In dieser Zeile sehen Sie möglicherweise, welche Werte Sie von System.getenv () oder System.getProperties () erhalten
Der zweite Weg wäre, native Laufzeit-API zu verwenden, um systemspezifische Werte zurückzugeben, aber Sie müssten bestimmte Befehle ausführen, die für jeden Betriebssystemtyp ausgeführt werden, den Ihr Client zu unterstützen versucht. Beispiel:
Runtime.getRuntime (). exec ("einige_Kommandozeilen_prog_that_returns_sys_info");