如何在java中检索USB闪存驱动器的制造商序列号?我看着这个How to get manufacturer serial number of an USB flash drive?但这对我没有帮助
whitzsjs1#
我不认为有一个纯Java解决方案可以跨多个平台工作。您可能需要“抓取”外部命令的输出。(或者弄清楚它们在做什么,然后在本机代码库中复制它...)在Linux上:
在Windows上:
wmic
@FoggyDay已经找到了几个第三方库,据说可以支持这个:
建议使用Files.getFileStore(path).getAttribute("volume:vsn")的评论是不正确的,我认为。Java源代码暗示这是返回由Windows分配的卷序列号,而不是制造商提供的序列号。相关代码在这里。
Files.getFileStore(path).getAttribute("volume:vsn")
2admgd592#
jUSB库允许您从usb.core.Configuration读取此内容。usb4java-另一个较新的Java库-可能也支持相同的功能。
t40tm48m3#
这个方法可以帮助你读取USB的序列号
public static String getSerialNumber() { String command = "powershell.exe Get-WmiObject Win32_DiskDrive | Select-Object SerialNumber\n"; String serialNumber = null; try { Process powerShellProcess = Runtime.getRuntime().exec(command); powerShellProcess.getOutputStream().close(); BufferedReader stdout = new BufferedReader(new InputStreamReader(powerShellProcess.getInputStream())); String line; while ((line = stdout.readLine()) != null) { System.out.println("PowerShell output: " + line); if (!line.trim().isEmpty()) { serialNumber = line.trim(); } } stdout.close(); BufferedReader stderr = new BufferedReader(new InputStreamReader(powerShellProcess.getErrorStream())); while ((line = stderr.readLine()) != null) { System.out.println(line); } stderr.close(); } catch (IOException e) { e.printStackTrace(); } return serialNumber; }
3条答案
按热度按时间whitzsjs1#
我不认为有一个纯Java解决方案可以跨多个平台工作。
您可能需要“抓取”外部命令的输出。(或者弄清楚它们在做什么,然后在本机代码库中复制它...)
在Linux上:
在Windows上:
wmic
来获取序列号,但您可能需要应用Microsoft修复程序才能使其工作:https://superuser.com/questions/600394/get-usb-key-manufacturer-serial-number@FoggyDay已经找到了几个第三方库,据说可以支持这个:
建议使用
Files.getFileStore(path).getAttribute("volume:vsn")
的评论是不正确的,我认为。Java源代码暗示这是返回由Windows分配的卷序列号,而不是制造商提供的序列号。相关代码在这里。2admgd592#
jUSB库允许您从usb.core.Configuration读取此内容。
usb4java-另一个较新的Java库-可能也支持相同的功能。
t40tm48m3#
这个方法可以帮助你读取USB的序列号