判断驱动器是分区还是独立硬盘

4

我正在编写自己的文件搜索程序(因为我想要/可以,而不是寻找现有的程序)。我可以使用DriveInfo.GetDrives()方法在C#中获取所有驱动器。理想情况下,我希望仅在单独的磁盘上并行运行搜索,并对于在同一驱动器上的分区按顺序运行它们。这样,我就不会导致驱动器不断寻找,因为GetDrives返回所有分区或可移动介质。我知道我可以通过判断USB驱动器与HDD驱动器的类型来区分它们。如何使用DriveInfo或其他方法实现这一点呢?

1个回答

3

这个相关的问题展示了如何使用WMI(可以在System.Management中找到)来查看:

var searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DiskPartition");

foreach (var queryObj in searcher.Get())
{
    Console.WriteLine("-----------------------------------");
    Console.WriteLine("Win32_DiskPartition instance");
    Console.WriteLine("Name:{0}", (string)queryObj["Name"]);
    Console.WriteLine("Index:{0}", (uint)queryObj["Index"]);
    Console.WriteLine("DiskIndex:{0}", (uint)queryObj["DiskIndex"]);
    Console.WriteLine("BootPartition:{0}", (bool)queryObj["BootPartition"]);
}

那么DiskIndex就是物理驱动器吗? - Brad Semrad
Win32_DiskPartition文档中得知,DiskIndex是“包含此分区的磁盘的索引号”。 - M.Babcock
@Brad - 提供的解决方案对您没有起作用吗?(您删除了答案...) - M.Babcock
你如何将索引映射到卷,例如C:\是磁盘索引0上的索引0? - Brad Semrad
2
那应该是一个“不同”的问题……我已经回答了这里提出的问题。 - M.Babcock
@M.Babcok 好的,我会创建一个不同的问题,但我的解决方案的一部分是使用 GetDrives 方法,该方法仅具有卷标(Name 属性)。我认为该方法可以基于名称和其他属性进行筛选,但我自己的阅读理解是错误的。这就是为什么我将其标记为未回答的原因。 - Brad Semrad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接