您可以使用VBA返回磁盘的卷GUID吗?
问题描述:
我遇到另一个帖子VBA Open a USB device using it's unique id in wmi 这是没有答案的海报显示了一种方式来通过VBA和WMI获取USB设备的UID,但我不知道如何使用VBA将VolumeGUID从WMI中抽出。您可以使用VBA返回磁盘的卷GUID吗?
我想获取DeviceID,如果可能的话为特定设备返回VolumeGUID,如果它与DeviceID匹配的话。
这篇文章How to get the volume GUID似乎表明它是可能的,但它是C++
上午我刚刚查询了错误的WMI类?
答
我曾经有VBS这样做,你可以减少和修改它在VBA中使用。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Volume
MountPoint
Sub Volume()
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Volume") ' Windows XP and earlier: not available.
wscript.echo "[ Win32_Volume ] - " & colItems.Count & " items"
For Each objItem in colItems
ShowT "Access", objItem.Access
ShowT "Automount", objItem.Automount
ShowT "Availability", objItem.Availability
ShowT "BlockSize", objItem.BlockSize
ShowT "Capacity", objItem.Capacity
ShowT "Caption", objItem.Caption
ShowT "Compressed", objItem.Compressed
ShowT "Description", objItem.Description
ShowT "DeviceID", objItem.DeviceID
ShowT "DirtyBitSet", objItem.DirtyBitSet
ShowT "DriveLetter", objItem.DriveLetter
ShowT "DriveType", objItem.DriveType
ShowT "FileSystem", objItem.FileSystem
ShowT "FreeSpace", objItem.FreeSpace
ShowT "IndexingEnabled", objItem.IndexingEnabled
ShowT "Label", objItem.Label
ShowT "MaximumFileNameLength", objItem.MaximumFileNameLength
ShowT "Name", objItem.Name
ShowT "NumberOfBlocks", objItem.NumberOfBlocks
ShowT "PNPDeviceID", objItem.PNPDeviceID
ShowT "Purpose", objItem.Purpose
ShowT "Status", objItem.Status
ShowT "StatusInfo", objItem.StatusInfo
ShowT "SerialNumber", objItem.SerialNumber
ShowT "SupportsDiskQuotas", objItem.SupportsDiskQuotas
ShowT "SupportsFileBasedCompression", objItem.SupportsFileBasedCompression
wscript.echo "-----"
Next
wscript.echo vbCrlf & "====================" & vbCrlf
End Sub
Sub MountPoint()
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_MountPoint")
wscript.echo "[ Win32_MountPoint ] - " & colItems.Count & " items"
For Each objItem in colItems
ShowT "Directory", objItem.Directory
ShowT "Volume", objItem.Volume
wscript.echo "-----"
Next
wscript.echo vbCrlf & "====================" & vbCrlf
End Sub
Sub ShowT(s, obj)
If Len(obj) > 0 Then Wscript.Echo vbTab & s & ": " & obj
End Sub
我相信我应该可以转换这个谢谢我会给它一个镜头! –
所以我能够得到它的工作,但有什么办法从Win32-PnPEntity中的DeviceID获取VolumeGUID我在http://*.com/questions/34873073/retrieve-volumeguids-via-win32- pnpentity-使用-VBA –