1

所以下面的代码:

Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim colDrives : Set colDrives = objFSO.Drives
Dim objWMIService : Set objWMIService = GetObject("winmgmts:")
Dim objLogicalDisk
Dim objDrive

For Each objDrive in colDrives
    Set objLogicalDisk = 
objWMIService.Get("Win32_LogicalDisk.DeviceID='" & objDrive.DriveLetter & ":'")
    Log(objLogicalDisk.DriveType)
Next

用于获取系统上每个驱动器的磁盘类型。我想知道的是,返回的数字('3'、'4'、'5'等)指的是什么?在互联网上环顾四周,我发现他们应该在我的系统上的不同答案 - 根据互联网:

未知 = 0

Removable = 1 ' 可移动介质

Fixed = 2 ' 固定介质(硬盘)

Remote = 3 ' 网络驱动器

CDROM = 4' 光盘

RAMDisk = 5 ' RAM 磁盘

根据我到目前为止收集的数据,3 = 我的本地 C 驱动器,5 = 我的本地 D (DVD) 驱动器,4 = 网络驱动器。

如果有人可以帮助消除这种歧义,那就太好了:)

4

2 回答 2

2

我发现这篇文章正在寻找一些使用 DriveType 属性的示例。

FWIW,虽然 Helen 清楚地提供了正确的答案,但我认为还值得注意的是,OP 在他的结果中遇到一些混乱的一个可能原因是因为他混合和匹配了来自不同接口的对象的使用。

他从使用 FileSystemObject 获取驱动器对象列表开始,但随后切换到 WMI 以从每个驱动器对象中获取他想要的属性。Drive 对象的 DriveType 属性值在 FileSystemObject 下与在 WMI 下不同。

与 Helen 为 WMI 提供的内容类似的参考,但对于 FileSystemObject 的内容是:

https://msdn.microsoft.com/en-us/library/aa243132(v=vs.60).aspx

Value    Meaning
--------------------------
0        Unknown
1        Removable Disk
2        Fixed Disk
3        Network Drive
4        Compact Disc
5        RAM Disk

如果他将所有内容都保存在 FileSystemObject 中,他的结果将符合他的预期,例如:

Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim colDrives : Set colDrives = objFSO.Drives
Dim objDrive

For Each objDrive in colDrives
    Wscript.Echo  objDrive.DriveType
Next
于 2015-10-08T02:10:04.567 回答
1

官方 WMI 参考位于MSDN 库中。

至于您的问题,Win32_LogicalDisk类参考描述了以下DriveType值:

价值含义
--------------------------
0 未知
1 无根目录
2 可移动磁盘
3 本地磁盘
4 网络驱动器
5 光盘
6 内存盘
于 2010-07-08T09:32:20.987 回答