Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在netcore 3.x中查找网络unc路径上的可用空间和总空间_C#_.net Core_.net Core 3.1 - Fatal编程技术网

C# 在netcore 3.x中查找网络unc路径上的可用空间和总空间

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

我正在更新以前使用AlphaFS为本地和网络路径提供IO操作的应用程序

其中一个功能是返回驱动器可用空间。 如果驱动器是本地的或使用DriveInfo映射,则此操作正常

 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:\
路径。