USB闪存驱动器制造商序列号
Posted
技术标签:
【中文标题】USB闪存驱动器制造商序列号【英文标题】:USB flash drive manufacturer serial number 【发布时间】:2014-08-16 23:51:16 【问题描述】:如何在java中检索USB闪存驱动器的制造商序列号?
我看看这个
How to get manufacturer serial number of an USB flash drive?
但这对我没有帮助。
【问题讨论】:
在 Windows 中,您可以使用Files.getFileStore(path).getAttribute("volume:vsn")
。我不知道有什么方法可以在其他操作系统中获取它。
【参考方案1】:
我认为没有适用于多个平台的纯 Java 解决方案。
您可能需要求助于“抓取”外部命令的输出。 (或者弄清楚他们在做什么,并将其复制到本机代码库中......)
在 Linux 上:
“lsusb”命令的输出包括序列号。 (检查手动输入。)在 Windows 上:
称为“usp64”和“USBDeview”的第三方命令执行此操作:请参阅http://ashfaqshinwary.wordpress.com/tag/how-to-find-usb-serial-number-from-windows/。
显然,您可以使用 wmic
获取序列号,但您可能需要应用 Microsoft 修复程序才能使其正常工作:https://superuser.com/questions/600394/get-usb-key-manufacturer-serial-number
@FoggyDay 找到了几个据称支持此功能的 3rd 方库:
jUSB 显然只适用于 GNU/Linux。
usb4java 支持更广泛的平台。
两者都依赖于平台特定的原生库。
我认为建议使用Files.getFileStore(path).getAttribute("volume:vsn")
的评论是不正确的。 Java 源代码意味着返回的是由 Windows 分配的卷序列号,而不是制造商提供的序列号。相关代码为here。
【讨论】:
【参考方案2】:jUSB 库允许您从 usb.core.Configuration 读取此内容。
usb4java - 另一个更新的 Java 库 - 可能也支持相同的。
【讨论】:
根据文档,jUSB 需要 GNU/Linux。 usb4java 库需要本地“libusb”库的一个端口,该库显然可用于一系列平台。以上是关于USB闪存驱动器制造商序列号的主要内容,如果未能解决你的问题,请参考以下文章
UDEV - 在 USB 闪存驱动器插入上运行程序 [关闭]