如何识别USB设备?

hig*_*141 15 usb usbserial usb-drive visual-c++ usb-flash-drive

是否可以通过唯一标识符识别USB设备,例如操作系统具有Mac-ID,硬盘ID,以太网卡ID是否具有唯一标识符?我知道可以轻松更改USB分区的卷序列号,也可以在用户格式化时更改.

但是有ID可以使用WMI服务通过MFC(Visual C++或C#)检索某种"USB硬盘ID或USB硬件ID"吗?这样的标识符对于物理设备是否是唯一的?请澄清......

Han*_*ant 18

任何USB设备中最接近的"唯一编号"是VID和PID,供应商和产品ID.它用于识别设备并为其安装适当的驱动程序.但是,对于同一产品,它是相同的数字集,它不足以识别您手中的特定设备.因此无法实施许可证验证程序,大概是你所追求的.

只有某些类型的 USB设备实现的序列号.由于驱动器格式化程序生成卷序列号,您偶然会从闪存驱动器中获取它.也没用,它很容易改变.USB wifi适配器可以工作,制造商必须生成唯一的MAC地址.

有一类USB设备非常适合这个目标.通用名称是"加密狗",它们是为此而制作的.当您购买一台软件时,您还可以获得可以链接到您的程序中的软件,该软件提供了一种防篡改方式来验证许可证号,这是许可证验证程序的另一个重要部分,通常是薄弱环节.有关此维基百科文章中的加密狗的更多信息.

  • 关于 VID 和 PID。从我所发现的情况来看,供应商 ID 和产品 ID 是设备中 USB 组件的 ID,而不是设备本身的 ID。换句话说,来自不同供应商的提供相似功能的不同 USB 物理设备可能来自特定供应商的相同 USB 组件。您获得的 VID 和 PID 是针对 USB 组件的,并不能识别 USB 组件所属的设备。要确定已使用 USB 组件构建的实际设备的特征,您必须执行其他查询。 (2认同)