获取Windows上给定path的可用磁盘空间

可能重复:
以编程方式确定从UNCpath可用的空间

我试图find一个函数,我可以从C#调用来检索该信息。 这是我迄今为止所尝试的:

String folder = "z:\myfolder"; // It works folder = "\\mycomputer\myfolder"; // It doesn't work System.IO.DriveInfo drive = new System.IO.DriveInfo(folder); System.IO.DriveInfo a = new System.IO.DriveInfo(drive.Name); long HDPercentageUsed = 100 - (100 * a.AvailableFreeSpace / a.TotalSize); 

这工作正常,但只有当我传递一个驱动器号。 有没有办法通过一个完整的path来检索自由空间?

谢谢。

尝试使用winapi函数GetDiskFreeSpaceEx :

 [DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetDiskFreeSpaceEx(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes); ulong FreeBytesAvailable; ulong TotalNumberOfBytes; ulong TotalNumberOfFreeBytes; bool success = GetDiskFreeSpaceEx(@"\\mycomputer\myfolder", out FreeBytesAvailable, out TotalNumberOfBytes, out TotalNumberOfFreeBytes); if(!success) throw new System.ComponentModel.Win32Exception(); Console.WriteLine("Free Bytes Available: {0,15:D}", FreeBytesAvailable); Console.WriteLine("Total Number Of Bytes: {0,15:D}", TotalNumberOfBytes); Console.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes);