繁体   English   中英

通过IP地址查看驱动器的AvailableFreeSpace

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM