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


没有VDS,如何确定这一点?
有没有更精确的方法(以字节为单位)?


问候,
凯特

最佳答案

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

关于c# - 如何在不分配字母的情况下获得磁盘卷上的可用空间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9974503/

10-08 22:46