[已解决]请教如何获取光驱的设备实例路径(ID)?
本帖最后由 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 = []
$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "DiskDrive")
While _SetupDiEnumDeviceInfo($hDevs, $aMouse, $tDevInfo)
$aMouse += 1
$sDescr = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_DEVICEDESC)
$sName = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_FRIENDLYNAME)
If $sName <> "" Then $sDescr = $sName
ReDim $aMouse[$aMouse + 1]
$aMouse[$aMouse] = $sDescr ; 磁盘描述信息
$aMouse[$aMouse] = _SetupDiGetDeviceInstanceId($hDevs, $tDevInfo) ; 设备范例ID
WEnd
; 枚举网卡只需把"DiskDrive"改为"Net",鼠标则对应Mouse,显卡对应Display。
_SetupDiDestroyDeviceInfoList($hDevs)
Local $dFindDevs = ""
For $i = 1 To $aMouse
If $aMouse[$i] = "USBSTOR\DISK&VEN_&PROD_USB_DISK_3.0&REV_PMAP\070B874E1FC19B55&0" Then
$dFindDevs = $aMouse[$i]
ExitLoop
EndIf
Next
解决了,$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "CDROM"),即可!
页:
[1]