找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7923|回复: 5

[磁盘文件] VB读取优盘物理序列号

 火.. [复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2010-9-16 16:35:25 | 显示全部楼层 |阅读模式

  1. Public Function GetUDiskID() As String
  2.     '**********************
  3.     '*Function:读取优盘物理序列号
  4.     '*Author:张旋(zxsoft)
  5.     '**********************
  6.     On Error Resume Next
  7.     Dim objWMIService As Object
  8.     Dim colDevices As Object
  9.     Dim objdevice As Object
  10.     Dim UDiskID As String
  11.     Dim isUDisk As Boolean
  12.     Dim objUsbDevice As Object
  13.     Dim colUSBDevices As Object
  14.     isUDisk = False
  15.     Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  16.     Set colDevices = objWMIService.ExecQuery("Select * From Win32_USBControllerDevice")
  17.     Dim ret
  18.     For Each objdevice In colDevices
  19.         Set colUSBDevices = objWMIService.ExecQuery("Select * From Win32_PnPEntity Where DeviceID = '" & Split(Replace(objdevice.Dependent, Chr(34), ""), "=")(1) & "'")
  20.         For Each objUsbDevice In colUSBDevices
  21.             If Left(objUsbDevice.DeviceID, 8) = "STORAGE" Then
  22.                 GetUDiskID = UDiskID
  23.                 Exit Function
  24.             End If
  25.             If Left(objUsbDevice.DeviceID, 8) = "USB\VID_" Then
  26.                 UDiskID = Split(objUsbDevice.DeviceID, "")(2)
  27.                 If InStr(UDiskID, "&") > 0 Then
  28.                     ret = Split(UDiskID, "&")
  29.                     UDiskID = ret(UBound(ret) - 2)
  30.                 End If
  31.             End If
  32.         Next
  33.     Next
  34.     GetUDiskID = "U-Disk-Not-Found"
  35. End Function
  36. '终于找到那个读序列号的代码了!原来放在gmail里啦!帖出来吧! 就是比我写的好呀
  37. Sub cc()
  38.     On Error Resume Next
  39.     Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  40.     Set colItems = objWMIService.ExecQuery("Select * From Win32_USBHub")
  41.     For Each objItem In colItems
  42.         a = objItem.DeviceID    'U盘识别为:USB\VID_09A6&PID_800\20040418154911-00,故用VID判别
  43.         If a Like "*VID*" Then b = Split(a, ""): MsgBox b(UBound(b))
  44.         '上句亦可:If InStr(a, "VID") Then b = Split(a, ""): MsgBox b(UBound(b))
  45.     Next
  46. End Sub
  47. Private Sub Form_Load()
  48. Debug.Print GetUDiskID()
  49. cc
  50. End Sub

复制代码

【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2010-9-17 18:20:52 | 显示全部楼层
顶顶。

做U盘管理程序用得着。
我就是嗷嗷叫的老马了......

1

主题

23

回帖

0

精华

初来乍到

积分
31
发表于 2011-2-13 14:08:59 | 显示全部楼层
呵呵学习看看。

0

主题

7

回帖

0

精华

初来乍到

积分
4
发表于 2011-3-17 22:13:57 | 显示全部楼层
顶收藏了。。。

0

主题

3

回帖

0

精华

初来乍到

积分
1
发表于 2011-3-31 10:38:48 | 显示全部楼层
我复制下了,感谢!

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-9-17 09:28:40 | 显示全部楼层
谢谢 阿杰 代码收了
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表