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 闪存驱动器插入上运行程序 [关闭]

如何模拟 USB 闪存驱动器并同时读取数据

如何在 USB 闪存驱动器插入上运行 Python 脚本

如何在 Linux 下的 C 中确定 USB 存储(USB 闪存驱动器)“设备路径”

markdown 创建一个可启动的USB闪存驱动器.md

无法使用 Xamarin Android/Uwp 在 USB 闪存驱动器中写入文件