2016-01-19 2 views
2

Я столкнулся с другим сообщением VBA Open a USB device using it's unique id in wmi , которому было отказано, когда на плакате появился способ получить UID устройства USB через VBA и WMI, но я не уверен, как вывести VolumeGUID из WMI с помощью VBA.Можете ли вы вернуть GUID тома диска с VBA?

Я хотел бы получить идентификатор устройства, а затем возвратить 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

Так что я смог заставить его работать, но есть ли способ получить VolumeGUIDs из DeviceID в Win32-PnPEntity. Я разместил вопрос на http://stackoverflow.com/questions/34873073/retrieve-volumeguids-via-win32- pnpentity-используя-VBA –

Смежные вопросы