如何在C#中找到包含给定分区的磁盘?

时间:2008-11-18 20:48:28

标签: c# filesystems disk

有没有人知道以编程方式找出哪个物理磁盘拥有给定分区的方法? 手动,我可以使用Start-> Run-> diskmgmt.msc找到此信息,在那里我可以看到(在我的计算机上)分区C:和D:在磁盘1上,E:& F:在磁盘0上。

如果文件位于不同的物理磁盘上,则通过并行执行来优化某些文件运算操作。

4 个答案:

答案 0 :(得分:3)

您可以通过查询Win32_DiskDrive类,使用来自System.Management命名空间的WMI获取此信息。

Here's有关.NET中WMI的基本信息。

答案 1 :(得分:1)

除了Arul的回答之外,这里还有一个链接,显示如何使用VBS脚本中的WMI来实现磁盘< - >分区关联:WMI Tasks: Disks and File Systems - >请参阅页面上的最后一个示例。

编辑:更好,使用C#在WMI上here's a good article,恰好也描述了获取拥有逻辑磁盘的磁盘驱动器所需的WMI类之间的确切关系(例如\\\\.\\PHYSICALDRIVE0) (例如C:

答案 2 :(得分:1)

请参阅HKEY_LOCAL_MACHINE \ SYSTEM \ MountedDevices

wmic path CIM_BasedOn get * > wmic-path-CIM_BasedOn-get.txt
wmic path CIM_DiskPartition get * > wmic-path-CIM_DiskPartition-get.txt
wmic path CIM_StorageExtent get * > wmic-path-CIM_StorageExtent-get.txt

请参阅类:CIM_BasedOn - 非枚举hiden分区,CIM_DiskPartition -all,但看不到磁盘标签,CIM_StorageExtent - GUID,label,partition(也隐藏)

答案 3 :(得分:0)

您确定分区只与一个磁盘相关联吗?它可以跨多个物理磁盘进行条带化/跨越/等。