Вы должны войти, чтобы создавать сообщения и темы.

Определение типа системного диска на c#

Добрый день, столкнулся с необходимостью определить на каком диске установлена Windows (SSD или HDD) для моей программы.

WMI никак не смог мне помочь, и потратив 2 дня на безуспешные попытки, костылём оставил smartctl.exe, но она добавляет 1мб к весу и так маленкой программы.

Может кто может подсказать более рациональный способ определения типа диска C: (SSD или HDD). Заранее спасибо!

 

Попробуй класс DriveInfo. Я помню проверял там тип диска (съемный или нет)

Приветствую.

Это не работает?

ManagementScope scope = new ManagementScope(@"\\.\root\microsoft\windows\storage");
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM MSFT_PhysicalDisk");
string type = "";
scope.Connect();
searcher.Scope = scope;

foreach (ManagementObject queryObj in searcher.Get())
{       
    switch (Convert.ToInt16(queryObj["MediaType"]))
    {
        case 1:
            type = "Unspecified";
            break;

        case 3:
            type = "HDD";
            break;

        case 4:
            type = "SSD";
            break;

        case 5:
            type = "SCM";
            break;

        default:
            type = "Unspecified";
            break;
    }
}
searcher.Dispose();