gpt4 book ai didi

java - 仅使用 Java 6 或仅使用 WMIC 枚举 MAC 地址

转载 作者:行者123 更新时间:2023-12-02 07:56:57 24 4
gpt4 key购买 nike

作为我的 Windows 专用 Java 应用程序的一部分,我需要查询各种硬件属性 - CPU/BIOS/硬盘序列号和 MAC 地址。因此我可以通过 Runtime.exec 调用使用 WMIC 和其他 Windows 特定工具。查询CPU和BIOS序列号很简单;例如,wmic BIOS get SerialNumber 就可以了。我还没有找到类似的简单解决方案来列出 MAC 地址。wmic nic list Brief 会显示一个格式错误的列表,但是用正则表达式解析输出是很痛苦的。

寻找WMIC相关方法都指向以下VBScript的某些变体:

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration")
For Each objItem in colItems
if objItem.IPEnabled = 0 And objItem.ServiceName <> "VMnetAdapter" And isNull(objItem.MACAddress) = 0 Then
Wscript.Echo objItem.MACAddress
End if
Next

存储和运行 VBS 存在安全隐患,因此当前所做的是将 VBscript 写入文本文件,执行,然后删除它。这很困惑而且很慢。我直接使用wmic来查询其他系统属性,例如BIOS序列号。

纯 Java 解决方案会好得多,但我还没有遇到任何适用于所有可用 MAC 地址的解决方案。我见过的最接近的是 this ,对于 IP 地址。

有没有办法从 Java 中做到这一点?我应该补充一点,尽管我听说 Java 7 有更多有用的网络 API,但我仅限于使用 Java 6。

更新:忘记添加 NetworkInterface 只返回 IPv4 以太网 MAC,而不返回任何其他虚拟适配器。

最佳答案

你不尝试从java访问WMI吗?也许与 jWMI – Query Windows WMI from Java

关于java - 仅使用 Java 6 或仅使用 WMIC 枚举 MAC 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9496288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com