1. 程式人生 > >如何獲取USB裝置的序列號?

如何獲取USB裝置的序列號?

比如聯想A710e,用adb可以獲取到其序列號是“A710e”:
D:\pcsuit\bin\Adb>adb devices
List of devices attached
A710e   device

如果用程式獲取到其序列號呢?

該序列號在登錄檔項【HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB】下能找到!

但是,從註冊裡讀取出來的序列號資訊,不一定準確。
比如聯想A68e的序列號裡有空格,但登錄檔裡把空格替換成下劃線了:

但它實際的序列號是"A68e            "。
可以用usbview,通過DeviceIoControl()直接讀取硬體裝置資訊,獲取到的。
用adb.exe命令對它進行操作,也必須使用有空格的真實序列號,否則,操作是會失敗的。如:
D:\pcsuite\bin\Adb>adb -s "A68e" shell am startservice -a skymobi_tcpservice
error: device not found
D:\pcsuite\bin\Adb>adb -s "A68e____________" shell am startservice -a skymobi_tcpservice
error: device not found
D:\pcsuite\bin\Adb>adb -s "A68e            " shell am startservice -a skymobi_tcpservice
Starting service: Intent { act=skymobi_tcpservice }