日期:2014-05-16  浏览次数:20932 次

WMI 磁盘信息相关
Win32_DiskPartition  获取磁盘分区相关信息 这个能获取到 硬盘序号 和 分区序号 
Win32_LogicalDisk  能获取分区的卷标,剩余空间等信息。
现在如何将这2个结合到一起使用?
比如 
1:1  C: system
1:2  d: tools
2:1  e: files
2:2  f: doc

其中 1:1 表示 第一个硬盘的第一个分区 同理 1:2 标识第一个硬盘的第二个分区

现在 Win32_DiskPartition Win32_DiskPartition 这2个类可以做到,但这2个类没有什么相关联的key
Win32_LogicalDisk中的Name为"c"  Win32_DiskPartition中的Name为"Disk #0, Partition #1"
无法把2个结果关联到一起.
SelectQuery diskPartition = new SelectQuery("Win32_DiskPartition");
            SelectQuery logicalDisk = new SelectQuery("Win32_LogicalDisk");
            ManagementObjectSearcher serch1 = new ManagementObjectSearcher(diskPartition);
            ManagementObjectSearcher serch2 = new ManagementObjectSearcher(logicalDisk);
            foreach (ManagementObject disk in serch1.Get()) {
                string id = disk["DiskIndex"].ToString() + disk["Index"].ToString() + disk["Size"].ToString();
                foreach (ManagementObject p in serch2.Get())
                {
                    if (disk["Name"] == p["Name"]) {  //此处不知如何进行关联
                        Debug.WriteLine(p["Size"]);
                    }
                }
            }

------解决方案--------------------
query association:
Win32_DiskPartition assoc

VB代码:


ComputerName = "."
Set wmiServices  = GetObject ( _
    "winmgmts:{impersonationLevel=Impersonate}!//" _
    & ComputerName)
' Get physical disk drive
Set wmiDiskDrives =  wmiServices.ExecQuery ( _
    "SELECT Caption, DeviceID FROM Win32_DiskDrive")

For Each wmiDiskDrive In wmiDiskDrives
    WScript.Echo "Disk drive Caption: " _
        & wmiDiskDrive.Caption _ 
        & VbNewLine & "DeviceID: " _
        & " (" & wmiDiskDrive.DeviceID & ")"

    'Use the disk drive device id to
    ' find associated partition
  &