-1

我正在编写一个制作 CD-ROM 驱动器磁盘映像的程序。我需要创建一个完整的磁盘映像,而不仅仅是一个卷映像,但我需要一个卷名,以便我可以相应地命名生成的文件。

基本上我需要这个:

图片

我知道我的 CD-ROM 驱动器是 CD-ROM 0,我需要知道那里有哪些卷。

我试图从 PowerShell 查询 WMI,但没有运气。

Get-WMIObject -Class Win32_LogicalDisk给我所有的驱动器号和卷标。

Get-WmiObject Win32_DiskPartition给我一个没有任何标签/字母的分区列表。

Get-WMIObject -Class Win32_PhysicalMediais 给了我一个设备地址(?),比如\\.\CDROM0.

Get-WMIObject -Class Win32_DiskDrivePhysicalMedia没用,它只有硬盘驱动器,没有CD-ROM。

我错过了什么?

我想要一种方法来查看\\.\CDROM0带有字母 D 和任何标签的卷。有没有办法做到这一点?也许一些kernel32函数?

4

2 回答 2

0

Win32_LogicalDisk WMI 类有一个属性,可以为您提供插入磁盘的VolumeName名称(如果有的话)。这与您在屏幕截图中突出显示的内容相对应。

于 2019-06-15T14:55:53.807 回答
0

根据以前的一些信息,重启后可能会更改多个CD-ROM的设备名称(我没有测试过)。

链接:第一个 CD-ROM 设备:CdRom0 还是 CdRom1?

所以我建议将驱动器号与 CD-ROM GUID 匹配。

  1. 通过以下方式获取每张 CD-ROM 的 GUIDGetVolumeNameForVolumeMountPoint

    GUID 例如: VolumeName: \?\Volume{f3b89248-8457-1ae3-9f8c-806e6f6b6923}\

    从这里您可以使用子字符串或正则表达式来剪切包含 GUID 的部分。

  2. GetLogicalDrives通过和获取光驱盘符GetDriveType

  3. 获取步骤2中获得的每个CD-ROM驱动器盘符的GUID,将GUID与GetVolumeNameforVolumeMountPoint步骤1中的GUID进行比较,如果两个GUID相同,则匹配成功。

于 2019-06-17T10:18:54.593 回答