我正在编写一个程序,用于制作CD-ROM驱动器的磁盘映像。我需要创建一个完整的磁盘映像,而不仅仅是一个卷映像,还需要一个卷名,以便可以相应地命名生成的文件。
基本上我需要这个:
我知道我的CD-ROM驱动器是CD-ROM 0,我需要知道那里有哪些卷。
我尝试从PowerShell查询WMI,但是没有运气。
Get-WMIObject -Class Win32_LogicalDisk
给了我所有驱动器号和卷标。
Get-WmiObject Win32_DiskPartition
给了我没有任何标签/字母的分区列表。
Get-WMIObject -Class Win32_PhysicalMedia
是给我一个设备地址(?),例如\\.\CDROM0
。
Get-WMIObject -Class Win32_DiskDrivePhysicalMedia
是没有用的,它里面只有硬盘驱动器,没有CD-ROM。
我想念什么?
我想要一种方法来查看\\.\CDROM0
的字母D和任何标签的体积。有没有办法做到这一点?也许一些kernel32函数?
答案 0 :(得分:0)
Win32_LogicalDisk WMI类具有属性VolumeName
,该属性为您提供了所插入磁盘的名称(如果有的话)。这与您在屏幕快照中突出显示的内容相对应。
答案 1 :(得分:0)
根据一些先前的信息,重新启动后可能会更改多个CD-ROM的设备名称(我没有对其进行测试)。
链接:First CD-ROM device: CdRom0 or CdRom1?
因此,我建议将驱动器号与CD-ROM GUID匹配。
通过GetVolumeNameForVolumeMountPoint
GUID,例如:VolumeName:\?\ Volume {f3b89248-8457-1ae3-9f8c-806e6f6b6923} \
在这里,您可以使用子字符串或正则表达式来剪切出包含GUID的部分。
通过GetLogicalDrives
和GetDriveType
获取CD-ROM的驱动器号。
获取在步骤2中获得的每个CD-ROM驱动器号的GUID,将GUID与步骤1中GetVolumeNameforVolumeMountPoint
中的GUID进行比较,如果两个GUID相同,则成功匹配。 / p>