簡體   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