我想获得Windows,MacOS和Linux(如果可能)上具有Java的计算机唯一的ID。可能是磁盘UUID,主板S / N …
Runtime.getRuntime().exec
可以使用(它不是applet)。
有想法吗?
MAC地址的问题是计算机上可能连接了许多网络适配器。默认情况下,大多数最新的默认设置为两个(Wi-Fi +电缆)。在这种情况下,必须知道应该使用哪个适配器的MAC地址。我在系统上测试了MAC解决方案,但是我有4个适配器(电缆,WiFi,用于Virtual Box的TAP适配器和一个用于蓝牙的适配器),但我无法决定我应该使用哪个MAC …如果一个人决定使用适配器当前正在使用中(已分配地址),然后会出现新问题,因为有人可以将笔记本电脑从电缆适配器切换到Wi-Fi。在这种情况下,通过电缆连接笔记本电脑时存储的MAC现在将无效。
例如,这些是我在系统中找到的适配器:
lo MS TCP Loopback interface
eth0 Intel(R) Centrino(R) Advanced-N 6205
eth1 Intel(R) 82579LM Gigabit Network Connection
eth2 VirtualBox Host-Only Ethernet Adapter
eth3 Sterownik serwera dostepu do sieci LAN Bluetooth
我曾经列出的代码:
Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
html" target="_blank">while (nis.hasMoreElements()) {
NetworkInterface ni = nis.nextElement();
System.out.println(ni.getName() + " " + ni.getDisplayName());
}
从此页面上收听的选项中,最让我接受的是我在解决方案中使用的一个,它是@Ozhan Duz的一个,另一个类似于@finnw的答案,其中他使用了JACOB,值得一提的是com4j-使用WMI的示例在这里可用:
ISWbemLocator wbemLocator = ClassFactory.createSWbemLocator();
ISWbemServices wbemServices = wbemLocator.connectServer("localhost","Root\\CIMv2","","","","",0,null);
ISWbemObjectSet result = wbemServices.execQuery("Select * from Win32_SystemEnclosure","WQL",16,null);
for(Com4jObject obj : result) {
ISWbemObject wo = obj.queryInterface(ISWbemObject.class);
System.out.println(wo.getObjectText_(0));
}
这将打印一些计算机信息以及计算机序列号。请注意,此示例所需的所有类都必须由maven-com4j-plugin生成。maven-com4j-plugin的示例配置:
<plugin>
<groupId>org.jvnet.com4j</groupId>
<artifactId>maven-com4j-plugin</artifactId>
<version>1.0</version>
<configuration>
<libId>565783C6-CB41-11D1-8B02-00600806D9B6</libId>
<package>win.wmi</package>
<outputDirectory>${project.build.directory}/generated-sources/com4j</outputDirectory>
</configuration>
<executions>
<execution>
<id>generate-wmi-bridge</id>
<goals>
<goal>gen</goal>
</goals>
</execution>
</executions>
</plugin>
上面的配置将告诉插件在项目文件夹的target / generate-sources / com4j目录中生成类。
问题内容: 我想获得Windows和Linux上使用Python的计算机唯一的ID。可能是CPU ID,主板序列号或其他。 我看了几个运气不好的模块(pycpuid,psi,…)。 关于如何做到这一点的任何想法? 问题答案: 如何使用MAC地址作为唯一ID? 此处的讨论使用Python从设备获取MAC地址显示了如何获取MAC地址
本文向大家介绍android手机获取唯一标识的方法,包括了android手机获取唯一标识的方法的使用技巧和注意事项,需要的朋友参考一下 获取手机唯一标识 拼接的方式获取手机唯一标识 第一种方式是获取IMEI,但是有的手机如果不是正品的话,就获取不到所以通过这一种方式还是会出现有的设备是没有唯一标识的 第二种方式获取手机卡的序列号,当然这种也不是唯一的,因为有的手机是双卡双待的所以可能会出现空的情况
用了nginx代理,本想用IP做标识,但是同一局域网下的所有设备,都是共用同一IP,请问可以获取到局域网ip或者通过哪些参数组合可以区分唯一性
问题内容: 我正在尝试生成特定计算机唯一的ID。该ID不会随机生成。这将基于计算,以便为计算机A生成的ID将是固定的,并且对于计算机A是唯一的。每次在计算机A上执行程序时,它将继续生成相同的ID,并且在另一台计算机上执行时,它将生成该计算机唯一的另一个ID。这是为了确保两台计算机没有相同的ID。 我的挑战: 为了使我的程序能够生成计算机唯一的ID,它需要基于执行该计算机的计算机唯一的种子来执行
问题内容: 我设置了一个向量集,以避免用迭代器分配之类的东西破坏GC(对于HashSet的值或键的每个遍历,对于集合引用和集合迭代器,您将分别获得一个新的/免费的) 无论如何,该方法是每个对象的唯一ID。(64位版本会失败吗?) 但是无论如何它都是可重写的,因此不能保证唯一,也不能保证每个对象实例唯一。 如果要创建“ ObjectSet”,如何为每个对象实例获取保证的唯一ID? 我刚刚找到了这个:
我有一个问题,看起来它是因为同时使用了类加载器的两个实例而引起的。计划任务总是运行两次而不是一次,即使设置为避免并发使用。 我如何在运行时唯一地识别给定类实例的类装入器实例?我知道它的完全限定名是类加载器、包和类名的组合。我想知道同一个类装入器的两个实例是否同时运行。 我尝试使用以下日志记录,但它没有给我任何有用的方面,我实际上希望看到什么(相当于一个唯一的线程id等)。是的,它确实给出了类加载器