如何使用 C# 检查单元 (C:) 脏位
How to check a unit (C:) dirty bit using C#
我知道可以通过 运行 命令 fsutil dirty query c:
从提升的提示中检查单元的脏位状态。在 windows 10 上也可以知道是否设置了 C: 脏位而不需要管理员权限,只需进入系统和维护页面即可,如果设置了脏位,将会有一条建议告诉您有必要重新启动以修复文件系统中的损坏。如何从 C# 程序检查脏位状态(任何单元或什至仅 C:)?
提前感谢任何人回答
您可以使用 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
程序集的引用,并且 运行 您的程序使用提升的提示
我知道可以通过 运行 命令 fsutil dirty query c:
从提升的提示中检查单元的脏位状态。在 windows 10 上也可以知道是否设置了 C: 脏位而不需要管理员权限,只需进入系统和维护页面即可,如果设置了脏位,将会有一条建议告诉您有必要重新启动以修复文件系统中的损坏。如何从 C# 程序检查脏位状态(任何单元或什至仅 C:)?
提前感谢任何人回答
您可以使用 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
程序集的引用,并且 运行 您的程序使用提升的提示