itzyx 发表于 2020-11-8 14:55:41

如何 读取串行总线控制器的 USB名称

AU3可以通过DriveGetDrive 枚举驱动器的数组,然后用 DriveGetType(path,$DT_BUSTYPE (3))来获取驱动器的总线类型(但是呢,不返回名称,只有Unknown"(未知), "SCSI", "ATAPI 等等);同样通过读取 注册表信息,KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR\Enum 也可以查看,不过也只能是获取USB的使用记录;
我现在希望获取串行总线控制器里的 USB名称,这个USB名称读取,我们可以通过手动 点击设备管理器,打开通用串行总线控制器查看。
现在如果想用AU3直接读取 USB名称 ,有没有更好的办法? 谢谢各位大佬了 (第一次尝试发布悬赏)


zghwelcome 发表于 2020-11-8 14:55:42


Dim $oWMI, $objs
$oWMI = ObjGet("WinMgmts:")
$objs = $oWMI.InstancesOf("CIM_USBDevice")
For $obj In $objs
        ConsoleWrite('名称:' & $obj.name & @CRLF )
Next
$obj = 0
$objs = 0
$oWMI =0

繁星 发表于 2020-11-8 17:20:51

https://docs.microsoft.com/zh-tw/windows-hardware/drivers/devtest/tools-for-testing-drivers
devcon listclass USB 或者 pnputil /enum-devices /connected /class USB

haijie1223 发表于 2020-11-8 22:39:38

建议下载devcon的代码研究一下,一看便知

itzyx 发表于 2020-11-9 00:33:01

haijie1223 发表于 2020-11-8 22:39
建议下载devcon的代码研究一下,一看便知

好的 谢谢 发哥

itzyx 发表于 2020-11-9 00:33:26

繁星 发表于 2020-11-8 17:20
https://docs.microsoft.com/zh-tw/windows-hardware/drivers/devtest/tools-for-testing-drivers
devcon...

谢谢 大佬,待我研究一下,英语水平有点差

haijie1223 发表于 2020-11-9 00:43:03

itzyx 发表于 2020-11-9 00:33
好的 谢谢 发哥

https://www.baidu.com/baidu?word=devcon%D4%B4%C2%EB&_si=%25CB%25D1%25CB%25F7&tn=menilui_pg&fyb=0&tr=mk3SLVN4HKm

afan 发表于 2020-11-9 02:32:36

应该可以直接读注册表获取吧

itzyx 发表于 2020-11-9 08:29:20

afan 发表于 2020-11-9 02:32
应该可以直接读注册表获取吧

A大可以吗?我找了 半天 都没找到方法,只有个USB历史使用记录

itzyx 发表于 2020-11-9 08:30:16

haijie1223 发表于 2020-11-9 00:43
https://www.baidu.com/baidu?word=devcon%D4%B4%C2%EB&_si=%25CB%25D1%25CB%25F7&tn=menilui_pg&fyb=0&t ...

好的 好的实在感谢

afan 发表于 2020-11-9 12:44:39

itzyx 发表于 2020-11-9 08:29
A大可以吗?我找了 半天 都没找到方法,只有个USB历史使用记录

你没具体说获取什么字符,懒得打字可以贴图

itzyx 发表于 2020-11-9 13:38:46

afan 发表于 2020-11-9 12:44
你没具体说获取什么字符,懒得打字可以贴图

诸如此类的 字符串, 字母加数字

afan 发表于 2020-11-9 14:18:30

到注册表以下位置找找就有
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}

itzyx 发表于 2020-11-9 15:18:55

afan 发表于 2020-11-9 14:18
到注册表以下位置找找就有
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF- ...

A大 这里面有 180多项,怎么知道 具体哪个是我要读取的名称呢

afan 发表于 2020-11-9 15:30:46

本帖最后由 afan 于 2020-11-9 15:32 编辑

我怎么知道你要哪个?只有你自己才清楚要干什么获取什么…
给你写段代码获取所有,可以自己添加条件过滤出需要的
Msgbox(0, '', _GetUSBDriverDesc())

Func _GetUSBDriverDesc()
        Local $sHKey = 'HKLM64\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}'
        Local $sInfo = '', $sDriverDesc, $ii = 1
        While 1
                $sSubKey = RegEnumKey($sHKey, $ii)
                If @error Then ExitLoop
                $ii += 1
                $sDriverDesc = RegRead($sHKey & '\' & $sSubKey, 'DriverDesc')
                $sInfo &= $sDriverDesc & @CRLF
        WEnd
        Return $sInfo
EndFunc   ;==>_GetUSBDriverDesc
页: [1] 2
查看完整版本: 如何 读取串行总线控制器的 USB名称