您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何获取Java中唯一的计算机标识符(例如磁盘ID或主板ID)?

如何获取Java中唯一的计算机标识符(例如磁盘ID或主板ID)?

MAC地址的问题是计算机上可能连接了许多网络适配器。认情况下,大多数最新的认设置为两个(Wi-Fi +电缆)。在这种情况下,必须知道应该使用哪个适配器的MAC地址。我在系统上测试了MAC解决方案,但是我有4个适配器(电缆,WiFi,用于Virtual @R_134_2419@的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 Virtual@R_134_2419@ Host-Only Ethernet Adapter
eth3 Sterownik serwera dostepu do sieci LAN Bluetooth

我曾经列出的代码

Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
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目录中生成类。

java 2022/1/1 18:24:18 有607人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶