Moin,
also wir berechnen hier zur eindeutigen Identifizierzung einzelner Rechner einen 20-stelligen Hashcode aus MAC-Adresse (es werden nur bestimmte Adapter berücksichtigt), hardwaremäßigem Rechnername und Volume-ID!
Das funktioniert, aber wie Thallius schon schrieb, ist auch das nicht hundertprozentig sicher!
Gruß Klaus
(a) den Rechnernamen bekommst Du doch ganz simpel mitHast Du ein Codeschnipsel?
System.getenv("computername")
Runtime.getRuntime().exec( "cmd /C dir" );
Das Ermitteln einer eindeutigen, immer gleichen MAC-Adresse ist auf Desktop-Rechner kein Problem.Warum werden nur bestimmte Adapter berücksichtigt?
/**
* @brief Ermitteln die MAC-Adresse
* @result die MAC-Adresse
*/
@SuppressWarnings( "boxing" )
private String fSeekMACAdresse()
{
String strMACAdr = "00-00-00-00-00-00";
try
{
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for( NetworkInterface netint : Collections.list(nets) )
{
for( InetAddress address : Collections.list(netint.getInetAddresses()) )
{
if( address instanceof Inet4Address )
{
System.out.println( "<<" + address + "##" + netint.getName() + "##" + netint.getDisplayName() + ">>" );
String sName = netint.getName();
String sDisplayName = netint.getDisplayName();
// ACHTUNG: das führende Blank bei MINIPORT ist zwingend erforderlich
// (da seit Java JDK 1.7_45 ggf. "Paketplaner-Miniport" ausgelesen wird)!!!
if( sName.startsWith("eth")
&& !sDisplayName.toUpperCase().contains("WAN") && !sDisplayName.toUpperCase().contains(" MINIPORT")
&& !sDisplayName.toUpperCase().contains("TUNNEL") && !sDisplayName.toUpperCase().contains("BLUETOOTH")
)
{
String DetectedIpAddress = address.getHostAddress();
System.out.println( "~~~ Current IP-Address: " + DetectedIpAddress );
byte[] mac = netint.getHardwareAddress();
StringBuilder sb = new StringBuilder();
for( int i = 0; i < mac.length; i++ )
{
sb.append( String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "") );
}
return sb.toString();
}
}
}
}
}
catch( IOException e )
{
e.printStackTrace();
}
return strMACAdr;
} // fSeekMACAdresse