获取 NAS 上的文件夹已用空间 C#

fap*_*m84 2 c# directory size shared-directory nas

有没有办法使用 C# 获取位于 NAS 或网络共享目录(即:\\myNASdrive\MediaFiles)上的文件夹大小(驱动器上的已用空间)?

我已经尝试过这样的事情:

string[] a = Directory.GetFiles(p, "*.*");
long b = 0;
foreach (string name in a)
{       
    FileInfo info = new FileInfo(name);
    b += info.Length;
}   
return b;
Run Code Online (Sandbox Code Playgroud)

但这仅适用于本地文件夹。

我们也尝试过使用用户模拟,但没有结果。

小智 5

假设您有正确的权限,这应该可以做到;

using System;
using System.Runtime.InteropServices;

namespace DiskFreeSpaceEx
{
    internal class FreeSpace
    {
        [DllImport("kernel32")]
        public static extern int GetDiskFreeSpaceEx(string lpDirectoryName,ref long    lpFreeBytesAvailable,ref long lpTotalNumberOfBytes,ref long lpTotalNumberOfFreeBytes);
        const string RootPathName = @"\\server\share";
        private static void Main(string[] args)
        {
            long freeBytesAvailable = 0;
            long totalNumberOfBytes = 0;
            long totalNumberOfFreeBytes = 0;

            GetDiskFreeSpaceEx(RootPathName, ref freeBytesAvailable, ref
               totalNumberOfBytes, ref totalNumberOfFreeBytes);

            Console.WriteLine("{0}\t{1}\t{2}\t{3}", RootPathName,
                freeBytesAvailable, totalNumberOfBytes, totalNumberOfFreeBytes);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 P/Invoke 获取信息。确保更改服务器并共享。