繁体   English   中英

如何在没有分配字母的情况下获得磁盘卷上的可用空间?

[英]How to get free space on a disk volume without letter assigned?

我正在尝试找出有关卷的可用空间信息。 分配字母的人很好(GetDiskFreeSpaceEx)。 我还连接到VDS (虚拟磁盘服务)并检索了名为AvailableAllocationUnits (A)和AllocationUnitSize (B)的内容,其中A * B = Windows显示的免费大小 但是B是4096,所以这不是一个确切的字节数。

  1. 如何在没有VDS的情况下确定这一点?
  2. 有更精确的方式(以字节为单位)?

问候,
凯特

在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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM