Domanda

To get the free disk space of the remote computer I am using below code

ConnectionOptions options = new ConnectionOptions();
        ManagementScope scope = new ManagementScope("\\\\SYSTEM_IP",
        options);
        scope.Connect();
         SelectQuery query1 = new SelectQuery("Select * from Win32_LogicalDisk");

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

       foreach (ManagementObject mo in queryCollection1)
        {
            // Display Logical Disks information

            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();
        }
        string line;
        line = Console.ReadLine();

    }

This is giving me result which is not exactly matching with server drive

  • It is giving me B:/ , C:/, D;/, E:/ and Z:/, but on server I actually have C:/, D:/, E:/, F:/, G:/, H:/, I:/, L:/ and z:/ Why I am not getting all drive status?
  • The drive space information is also not precise; ex.: for D drive I am getting "429496725504 bytes" by this code which is 400 GB but actually on my server D:/ is 415 GB

Where I am going wrong?

EDIT - Possible reason

I just checked and found out that the server on which I am running this code have B:/ , C:/, D;/, E:/ and Z:/ and D:/ have 400 GB. So that means, no matter what IP address I am providing it is taking details of the computer on which I am running my code.

È stato utile?

Soluzione

The management scope is missing some path parts, the correct one should be:

ManagementScope scope = new ManagementScope("\\\\FullComputerName\\root\\cimv2");

Source: http://msdn.microsoft.com/en-us/library/ms257337%28v=vs.80%29.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top