我正在尝试查找有关卷的可用空间信息。那些分配了字母的就可以了(GetDiskFreeSpaceEx)。我还连接到 VDS(虚拟磁盘服务)并检索了名为 AvailableAllocationUnits (A) 和 AllocationUnitSize (B) 的内容,其中 A*B = Windows 显示的可用大小。但 B 是 4096,所以这不是一个精确的字节数。
问候,
凯特
在 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
要读取 shell 进程的输出,您可以读取标准输出
string output = proc.StandardOutput.ReadToEnd();
免责声明:是的,我知道这不完全是最干净的方法,但它是一种方法。因为我不知道有 API 可以访问如此低级的信息。
对于物理分区,以下操作应该有效:
fsutil diskfree \global\device\harddisk0\partition3
磁盘管理器没有显示我的恢复分区的可用空间,但它显示了。