Как обнаружить информацию о свободном пространстве и диске с одного сервера на другой в С#

Если в сети 3 устройства и если я хочу определить информацию о свободном пространстве и диске одного компьютера с другого компьютера, то как это сделать... Я нашел этот код. но я не знаю, как мне проверить его, чтобы узнать, работает ли он. это правильный путь?

public Hashtable ReadFreeSpaceOnNetworkDrives()
{
     //create Hashtable instance to hold our info
     Hashtable driveInfo = new Hashtable();
     //query the win32_logicaldisk for type 4 (Network drive)
     SelectQuery query = new SelectQuery("select name, FreeSpace from win32_logicaldisk where drivetype=4");

     //execute the query using WMI
     ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
     //loop through each drive found
     foreach (ManagementObject drive in searcher.Get())
     {
        //add the name & freespace to our hashtable
        driveInfo.Add("Drive", drive["name"]);
        driveInfo.Add("Space", drive["FreeSpace"]);
     }
     return driveInfo;
}

Обновить:

Я получил ответ на свой вопрос, но у меня есть код, но он находится в консольном приложении, и я хочу в приложении Windows Form с графическим представлением дискового пространства и информации о диске. Как я могу использовать этот код и делать это?

        ManagementScope scope = new ManagementScope("\\\\10.74.160.126\\root\\cimv2");
        scope.Connect();

        ObjectQuery query = new ObjectQuery( "SELECT * FROM Win32_OperatingSystem");
        SelectQuery query1 = new SelectQuery("Select * from Win32_LogicalDisk");

        ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

        ManagementObjectCollection queryCollection = searcher.Get();

        ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(scope, query1);
        ManagementObjectCollection queryCollection1 = searcher1.Get(); 

        foreach (ManagementObject m in queryCollection)
        {
            // Display the remote computer information
            Console.WriteLine("Computer Name : {0}",
                m["csname"]);
            Console.WriteLine("Windows Directory : {0}",
                m["WindowsDirectory"]);
            Console.WriteLine("Operating System: {0}",
                m["Caption"]);
            Console.WriteLine("Version: {0}", m["Version"]);
            Console.WriteLine("Manufacturer : {0}", m["Manufacturer"]);
            Console.WriteLine();

            }

        foreach (ManagementObject mo in queryCollection1)
        {
            Console.WriteLine("  Disk Name : {0}", mo["Name"]);
            Console.WriteLine("   Disk Size : {0}", mo["Size"]); 
            Console.WriteLine("  FreeSpace : {0}", mo["FreeSpace"]);
            Console.WriteLine("  Disk DeviceID : {0}", mo["DeviceID"]); 
            Console.WriteLine("  Disk VolumeName : {0}", mo["VolumeName"]);
            Console.WriteLine("  Disk SystemName : {0}", mo["SystemName"]); 
            Console.WriteLine("Disk VolumeSerialNumber : {0}", mo["VolumeSerialNumber"]);
            Console.WriteLine(); 
        }
        Console.ReadLine();
        }

Ответы

Ответ 1

Код проверяет все диски на компьютере, где вы запускаете эту программу. Он возвращает таблицу с двумя записями на диск. Один с именем и один со свободным пространством. Вы можете просто написать простую программу, которая использует этот метод и отображает эти данные. Должна быть возможность запросить диски с удаленного компьютера. Возможно, эта статья может рассказать вам больше http://msdn.microsoft.com/en-us/library/ms257337%28v=vs.80%29.aspx

EDIT:

public Hashtable ReadFreeSpaceOnNetworkDrives(String FullComputerName)
{
     ManagementScope scope = new ManagementScope(fullComputerName);
     scope.Connect();
     //create Hashtable instance to hold our info
     Hashtable driveInfo = new Hashtable();
     //query the win32_logicaldisk for type 4 (Network drive)
     SelectQuery query = new SelectQuery("select name, FreeSpace from win32_logicaldisk where drivetype=4");

     //execute the query using WMI
     ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope,query);
     //loop through each drive found
     foreach (ManagementObject drive in searcher.Get())
     {
        //add the name & freespace to our hashtable
        driveInfo.Add("Drive", drive["name"]);
        driveInfo.Add("Space", drive["FreeSpace"]);
     }
     return driveInfo;
}