[英]See the AvailableFreeSpace of drives via IP-Address
我知道,AvailableFreeSpace可以用于本地驱动器,例如“ C:/”,“ D:/”等。它也可以在网络驱动器上使用。
但是现在我的问题是:
是否可以查看另一个IP上的“文件夹”的AvailableFreeSpace? 我使用以下代码连接到本地驱动器:
System.IO.DriveInfo _DriveInfo = new DriveInfo(SaveLocation);
当“ SaveLocation”是本地驱动器(例如“ C:\\ Temp \\ Folder”)时,它可以正常工作。
但是,当“ SaveLocation”中有一个IP时,它将不起作用。 在这种情况下,SaveLocation看起来像这样:“ 192.168.200.10 \\ c \\ Data”
这不起作用,这就是我提出问题的原因。 异常消息是:{“对象必须是根目录(\\” C:\\\\“)或驱动器号(\\” C \\“)。”}
我希望你能帮助我。
如在Windows上获取给定路径的可用磁盘可用空间中所示 :
使用winapi函数GetDiskFreeSpaceEx
可以确定UNC(网络)路径上的可用空间。 例如,创建一个名为FreeSpace的新VS项目,并将其粘贴为Program.cs:
using System;
using System.Runtime.InteropServices;
namespace FreeSpace
{
class Program
{
[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);
static void Main(string[] args)
{
ulong FreeBytesAvailable;
ulong TotalNumberOfBytes;
ulong TotalNumberOfFreeBytes;
bool success = GetDiskFreeSpaceEx(@"\\NETSHARE\folder",
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);
Console.ReadKey();
}
}
}
如您所见,这是与上面的“问题”链接完全相同的代码,只是分解成一个类,再加上正确的using
指令即可正确编译。 所有积分将转到https://stackoverflow.com/users/995926/rekire
WMI似乎无法处理网络共享上的可用空间。 但是对于本地磁盘,Windows Management Interface是必经之路: https : //msdn.microsoft.com/en-us/library/aa394592(v=vs.85).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.