Как проверить единицу (C :) грязный бит, используя C# - PullRequest
1 голос
/ 05 апреля 2020

Я знаю, что можно проверить состояние «грязного бита» устройства, выполнив команду fsutil dirty query c: из привилегированного приглашения. На windows 10 также можно узнать, установлен ли C: «грязный» бит без необходимости прав администратора, просто перейдя на страницу «Система и обслуживание», если установлен «грязный» бит, будет совет, говорящий о необходимости: перезагрузите компьютер для исправления повреждения в файле систем. Как можно проверить состояние «грязного бита» (любого устройства или даже только C :) из программы C#?

Заранее спасибо, кто-нибудь ответит

1 Ответ

2 голосов
/ 05 апреля 2020

Вы можете получить эту информацию, используя WMI-запрос

var q = new ObjectQuery("Select * FROM Win32_Volume");
using (var searcher = new ManagementObjectSearcher(q))
using (var moc = searcher.Get())
{
    foreach (ManagementObject volume in moc)
    {
        String label = (String)volume["Label"];
        Boolean dirtyBitSet = (Boolean)(volume["DirtyBitSet"] ?? false);
        Console.WriteLine($"{label} => {dirtyBitSet}");
    }
}

. Вы должны добавить ссылку на сборку System.Management, а также запустить вашу программу, используя запрос с повышенными правами

...