我正在尝试将物理磁盘映射到已安装的分区,甚至进一步映射到已安装的卷号(C:\ 安装在磁盘 0 的分区 0 上)
首先我用的是
Select * from Win32_DiskDrive
获取所有物理驱动器的索引。然后我使用
SELECT Name FROM Win32_DiskPartition WHERE Index = " & objDiskDrive.Index
名称的形式为Disk #0 Partition #0
。我尝试使用 运行查询,结果Win32_LogicalDiskToPartition
返回如下内容:
Antecedent: \\COMP_NAME\root\cimv2:Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
Dependent: \\COMP_NAME\root\cimv2:Win32_LogicalDisk.DeviceID="C:"
EndingAddress: 160039272959
StartingAddress: 1048576
如果我可以查询先行字符串并解析出依赖字符串,我就可以得到我的映射,但这是行不通的。查询无效。我正在尝试运行以下命令:
Select * from Win32_LogicalDiskToPartition WHERE Antecedent LIKE '%Disk #0, Partition #0%'
答案1
我相信你应该使用ASSOCIATORS OF
声明(参考)来获取所需的结果。因此,wql 表达式将是:
"ASSOCIATORS OF {Win32_DiskPartition.DeviceID='Disk #0, Partition #0'} WHERE AssocClass = Win32_LogicalDiskToPartition"
您也可以使用相同的技术首先获取分区(使用关联类Win32_DiskDriveToDiskPartition
)
微软发布了一个代码片段,它完全满足您的需要(最后一个:“检测哪个驱动器号与逻辑磁盘分区相关联”,事实上我的答案是基于此的)http://msdn.microsoft.com/en-us/library/aa394592%28v=vs.85%29.aspx
希望这可以帮助