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





























