【问题标题】:Can you return the Volume GUID of a disk with VBA?您可以使用 VBA 返回磁盘的卷 GUID 吗?
【发布时间】:2016-01-19 05:34:18
【问题描述】:

我遇到了另一个帖子VBA Open a USB device using it's unique id in wmi 海报展示了一种通过 VBA 和 WMI 获取 USB 设备 UID 的方法,但我不确定如何使用 VBA 从 WMI 中检索 VolumeGUID。

如果特定设备与 DeviceID 匹配,我想获取 DeviceID,然后返回 VolumeGUIDs(如果可能)。

这篇帖子How to get the volume GUID 似乎暗示这是可能的,但它是针对 C++ 的

我只是在查询错误的 WMI 类吗?

【问题讨论】:

    标签: windows vba excel wmi wmi-query


    【解决方案1】:

    我以前有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 获取 VolumeGUIDs 我在stackoverflow.com/questions/34873073/… 发布了这个问题
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2018-07-06
    • 2010-10-04
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多