本帖最后由 smooth 于 2022-1-11 09:19 编辑
以下代码可以获取磁盘设备的设备实例ID,但是无法获取到光驱的设备实例ID,现在银行的U盾,都是做成CD-ROM的形式,比如浦发银行的U盾,用下面的代码就搞不到它的设备实例ID。
在SetupApi.au3中搜索了一下关于CD-ROMM的函数,英文不好实在是看不太懂,不知道是否可以将下面的代码改造一下,用来获取光驱的设备实例ID?
#include <SetupApi.au3>
Local $hDevs, $tDevInfo, $aMouse[1][2] = [[0]]
$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "DiskDrive")
While _SetupDiEnumDeviceInfo($hDevs, $aMouse[0][0], $tDevInfo)
$aMouse[0][0] += 1
$sDescr = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_DEVICEDESC)
$sName = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_FRIENDLYNAME)
If $sName <> "" Then $sDescr = $sName
ReDim $aMouse[$aMouse[0][0] + 1][2]
$aMouse[$aMouse[0][0]][0] = $sDescr ; 磁盘描述信息
$aMouse[$aMouse[0][0]][1] = _SetupDiGetDeviceInstanceId($hDevs, $tDevInfo) ; 设备范例ID
WEnd
; 枚举网卡只需把"DiskDrive"改为"Net",鼠标则对应Mouse,显卡对应Display。
_SetupDiDestroyDeviceInfoList($hDevs)
Local $dFindDevs = ""
For $i = 1 To $aMouse[0][0]
If $aMouse[$i][1] = "USBSTOR\DISK&VEN_&PROD_USB_DISK_3.0&REV_PMAP\070B874E1FC19B55&0" Then
$dFindDevs = $aMouse[$i][1]
ExitLoop
EndIf
Next
|