C# 在netcore 3.x中查找网络unc路径上的可用空间和总空间
我正在更新以前使用AlphaFS为本地和网络路径提供IO操作的应用程序 其中一个功能是返回驱动器可用空间。 如果驱动器是本地的或使用DriveInfo映射,则此操作正常C# 在netcore 3.x中查找网络unc路径上的可用空间和总空间,c#,.net-core,.net-core-3.1,C#,.net Core,.net Core 3.1,我正在更新以前使用AlphaFS为本地和网络路径提供IO操作的应用程序 其中一个功能是返回驱动器可用空间。 如果驱动器是本地的或使用DriveInfo映射,则此操作正常 var pathRoot = System.IO.Path.GetPathRoot(startPath); var driveInfo = new DriveInfo(pathRoot); AvailSpace = (ulong) driveInfo.AvailableFreeSpace; TotalSpace = (u
var pathRoot = System.IO.Path.GetPathRoot(startPath);
var driveInfo = new DriveInfo(pathRoot);
AvailSpace = (ulong) driveInfo.AvailableFreeSpace;
TotalSpace = (ulong) driveInfo.TotalSize;
但对于unc路径,它将出错
Drive name must be a root directory (i.e. 'C:\\') or a drive letter ('C'). "
在.netcore 3.x中是否有适用于网络unc路径的DriveInfo替代方案?如果您的应用程序仅在Windows上运行,您可以尝试,该应用程序称其支持unc路径
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
out ulong lpFreeBytesAvailable,
out ulong lpTotalNumberOfBytes,
out ulong lpTotalNumberOfFreeBytes);
GetDiskFreeSpaceEx("\\\\server\\path\\", out var size, out var _, out var __);
我发现在我的RAM驱动器上,
GetDiskFreeSpaceEx
不工作,既不使用R:\
路径,也不使用\?\R:\
路径。