如何使用WMI获取特定硬盘的逻辑磁盘?

时间:2014-11-21 07:44:39

标签: c# wmi wmi-query

我目前正在开发一个需要使用WMI(Windows管理界面)的项目。我需要找到硬盘和逻辑磁盘以及它们的一些信息。例如,我使用以下代码来获取物理磁盘:

hd = new HardDrive();
mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Model = '"
                                        + disksModel[i] + "'");
foreach(ManagementObject moDisk in mosDisks.Get())
{
    string vari = moDisk["DeviceID"].ToString();
    hd.HardDiskModel = moDisk["Model"].ToString();
    hd.HardDiskType = moDisk["InterfaceType"].ToString();
    hd.HardDiskStatus = moDisk.Properties["Status"].Value.ToString();
    hd.HardDiskSize = moDisk.Properties["Size"].Value.ToString();
    hd.HardDiskName = moDisk.Properties["Name"].Value.ToString();
    hd.HardDiskSerialNo = moDisk.Properties["SerialNumber"].Value.ToString();
}

然后另一个查询来获取逻辑磁盘。

我唯一想知道的是:我怎样才能确保获得特定硬盘的逻辑磁盘?

例如,如果我有3个硬盘(HD1,HD2,HD3)和8个逻辑磁盘(c:j:),我如何在代码中确保例如{ {1}}和c:属于HD1,d:e:f:g:属于HD2和h:以及{{1}属于HD3?

1 个答案:

答案 0 :(得分:1)

您可以使用Win32_DiskDrive句子将ASSOCIATORS OF与逻辑驱动器关联起来,这些是您必须使用的类。

  • Win32_DiskDrive
  • Win32_DiskDriveToDiskPartition
  • Win32_DiskPartition
  • Win32_LogicalDiskToPartition
  • 的Win32_LogicalDisk

前段时间我写了Delphi sample about this你可以检查一下,你也可以在SO question上找到一个C#样本。