2016-01-19 30 views
2

我遇到另一个帖子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类?

回答

3

我曾经有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 
+0

我相信我应该可以转换这个谢谢我会给它一个镜头! –

+0

所以我能够得到它的工作,但有什么办法从Win32-PnPEntity中的DeviceID获取VolumeGUID我在http://stackoverflow.com/questions/34873073/retrieve-volumeguids-via-win32- pnpentity-使用-VBA –

相关问题