Как получить свободное место на томе диска без присваиваемой буквы? - PullRequest
3 голосов
/ 02 апреля 2012

Я пытаюсь найти информацию о томах в свободном пространстве.Те с назначенными буквами в порядке (GetDiskFreeSpaceEx).Я также подключился к VDS (служба виртуальных дисков) и получил то, что называется AvailableAllocationUnits (A) и AllocationUnitSize (B), где A *B = свободный размер , показанный Windows.Но B 4096, так что это не точное число в байтах.

  1. Как определить это без VDS?
  2. Есть ли более точный способ (в байтах)?

в отношении,Kate

1 Ответ

1 голос
/ 09 января 2015

В Windows вы можете выполнить следующие команды и проанализировать вывод:

vssadmin list volumes

Это дает:

C:\Windows\system32>vssadmin list volumes
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Volume path: \\?\Volume{66c6160d-60cc-11e3-824b-806e6f6e6963}\
    Volume name: \\?\Volume{66c6160d-60cc-11e3-824b-806e6f6e6963}\
Volume path: D:\
    Volume name: \\?\Volume{66c6160f-60cc-11e3-824b-806e6f6e6963}\
Volume path: C:\
    Volume name: \\?\Volume{66c6160e-60cc-11e3-824b-806e6f6e6963}\

Затем Выполните

fsutil volume diskfree

Что дает:

C:\Users\MC>fsutil volume diskfree \\?\Volume{66c6160e-60cc-11e3-824b-806e6f6e6963}\
Total # of free bytes        : 47826694144
Total # of bytes             : 255691059200
Total # of avail free bytes  : 47826694144

Чтобы прочитать вывод процесса оболочки, вы можете прочитать стандартный вывод

string output = proc.StandardOutput.ReadToEnd();

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Да, я знаю, что это не совсем чистый способ, но это способ. Поскольку я не знаю API для доступа к информации такого низкого уровня.

...