如何使用C#检查单元(C :)脏位

问题描述 投票:1回答:1

我知道可以通过在提升的提示符下运行命令fsutil dirty query c:来检查单元的脏位状态。在Windows 10上,也可以仅通过进入“系统和维护”页面就知道是否在没有管理员特权的情况下设置了C:脏位,如果设置了脏位,则会出现一条建议,告诉您必须重新启动才能修复文件系统中的损坏。如何从C#程序检查(任何单元甚至仅C :)脏位状态?

感谢任何人都会回答

c# filesystems
1个回答
1
投票

您可以使用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程序集的引用,并使用提升的提示符运行程序

© www.soinside.com 2019 - 2024. All rights reserved.