2016-01-19 33 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 –

相關問題