是否有办法使用C#获取位于NAS或网络共享目录上的文件夹大小(驱动器上的已用空间)I.e。:\\ 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;
但这仅适用于本地文件夹。
此外,我们已尝试使用用户模拟,但没有结果。
答案 0 :(得分:3)
假设您拥有正确的权限,则应该这样做;
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);
}
}
}
使用P / Invoke获取信息。确保更改服务器并共享。