C# Numer partycji i dysku dla litery dysku

28-Lut-2011

Trzeba odnaleźć numer partycji i numer dysku dla znanej litery dyskowej. Bywa tak, że jeżeli na komputerze zainstalowanych jest kilka Windowsów, to każdy z nich twierdzi, że używa dysku C:, chociaż tak na prawdę oznaczenie literowe C: przyznaje różnym partycjom dyskowym. Poniżej fragment kodu ze strony http://bytes.com/topic/net/answers/509395-how-get-hard-disk-number-drive-letter , który pozwala wyświelić dane o partycjach i dyskach:

ManagementScope scope = new ManagementScope(@"\root\cimv2");
ObjectQuery query = new ObjectQuery("select * from Win32_DiskPartition");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection drives = searcher.Get();
foreach (ManagementObject current in drives) 
{
     Console.WriteLine("device id = " + current["deviceid"]);
     ObjectQuery associators = new ObjectQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=\"" +        
                               current["deviceid"] + "\"} where assocclass=Win32_LogicalDiskToPartition");
     searcher = new ManagementObjectSearcher(scope, associators);
     ManagementObjectCollection disks = searcher.Get();
     foreach (ManagementObject disk in disks)
      {
            Console.WriteLine("\tdevice id = " + disk["deviceid"]);
     }

W moim przypadku należało znaleźć numer partycji dla dysku systemowego. Kiedy potrzeba sprawdzić na jakim dysku został zainstalowany windows można użyć jednej z następujących metod:

            Environment.GetEnvironmentVariable("SystemRoot");
            Environment.GetEnvironmentVariable("windir");

Pierwsza z nich zwaraca katalog główny dysku systemowego np c:\

Druga zwraca ścieżkę do katalogu z Windows np c:\Windows

Dodaj komentarz:

Autor: Rafał Kraik