Проблема, по-видимому, связана со свойством свободного пространства класса Win32_LogicalDisk, поскольку оно показывает только то, на что имеет права пользователь, вошедший в систему в данный момент, а не то, какое свободное пространство фактически существует.
Пример кода, хотя не полностью necc:
Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='Z:'")
' server share, total disk size, total disk free, percent free
tmpStatus = tmpStatus & arrShares(i) & "," & FormatNumber((objLogicalDisk.size / GBCONVERSION),,-1) & "," & _
FormatNumber((objLogicalDisk.FreeSpace / GBCONVERSION),,-1) & "," & _
((objLogicalDisk.FreeSpace / GBCONVERSION) / (objLogicalDisk.size / GBCONVERSION) * 100) & "@"
ПРИМЕЧАНИЕ. Это для общего ресурса виртуального сервера, поэтому тип привода 4
.
Есть ли лучший способ? Опять же, общее дисковое пространство является правильным, но свободного места нет, поскольку из того, что я нашел в MSDN, он использует права текущего пользователя для определения свободного места. Должен быть другой / лучший способ.