C# - 获取物理驱动器列表或数量(而非逻辑驱动器)

5

我实现了一个程序,通过访问路径“\\.\PhysicalDrive0”按位读取和分析物理磁盘。

我希望用户能够从物理磁盘列表中选择物理磁盘。

我知道如果我更改路径的最后一个数字,我可以读取另一个物理磁盘,但我不知道如何获取物理磁盘列表或物理磁盘数量。

我应该使用哪个函数来获取物理磁盘编号列表?

请提供具体建议。

1个回答

10

例如,使用 WMI:

using System.Management;

List<String> result;
var query = new WqlObjectQuery("SELECT * FROM Win32_DiskDrive");
using (var searcher = new ManagementObjectSearcher(query))
{
    result = searcher.Get()
                     .OfType<ManagementObject>()
                     .Select(o => o.Properties["DeviceID"].Value.ToString())
                     .ToList();
}

这将为您提供系统中物理驱动器的设备ID列表。


它输出4个硬盘的所有相同名称。 - dolgom
我需要每个物理磁盘的编号。 - dolgom
我已经更新了我的回答 - 尽管它只是作为示例代码提供的。如果那仍然不是你要找的,请查看其他可用的属性。 - decPL
2
如果它有效,请标记他的回复,以便帮助其他人。 - Amit Shakya
不,它不起作用。在一个配置为RAID 1的2个系统驱动器和配置为RAID 10的8个数据硬盘的PC上,此查询返回2个驱动器。 - AH.

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