Win32_DiskDrive

WMI(Windows Management Instrumentation)中,Win32_DiskDrive 类的 MediaType 属性用于描述磁盘驱动器的媒体类型。根据微软的文档,MediaType 属性可以取以下值:

  • Unknown:未知的媒体类型
  • Fixed hard disk media:固定硬盘媒体
  • Removable media:可移动媒体,如USB闪存驱动器、软盘等
  • CD-ROM mediaCD-ROM媒体
  • RAM diskRAM磁盘
  • Flash memory:闪存
  • Network disk:网络磁盘
  • Virtual disk:虚拟磁盘
  • Optical disk:光盘
  • Magnetic disk:磁盘
  • Other:其他类型的媒体

代码逻辑

当前代码的主要功能是通过WMI(Windows Management Instrumentation)查询Windows系统中的磁盘驱动器信息,并将结果存储在一个字典中。然后,它遍历这个字典,查找媒体类型为“可移动媒体”或“外部硬盘媒体”的逻辑磁盘设备ID,并打印这些设备ID

导入wmi模块:

1
import wmi

这行代码导入了Pythonwmi模块,该模块允许Python程序访问Windows Management Instrumentation API,从而可以查询和管理Windows系统的各种信息。

创建WMI对象:

1
c = wmi.WMI()

这行代码创建了一个WMI对象c,用于后续的WMI查询。

查询磁盘驱动器信息:

1
drives = c.Win32_DiskDrive()

这行代码查询系统中的所有磁盘驱动器信息,并将结果存储在drives变量中。

初始化字典:

1
drives_dict = {}

这行代码创建了一个空字典drives_dict,用于存储后续查询到的磁盘驱动器和逻辑磁盘的关联信息。

遍历磁盘驱动器:

1
2
3
4
5
6
for drive in drives:
partitions = drive.associators("Win32_DiskDriveToDiskPartition")
for partition in partitions:
logical_disks = partition.associators("Win32_LogicalDiskToPartition")
for logical_disk in logical_disks:
drives_dict[logical_disk.DeviceID] = drive.MediaType

这段代码遍历每个磁盘驱动器,通过WMI的关联查询获取每个磁盘驱动器对应的磁盘分区,然后再获取每个磁盘分区对应的逻辑磁盘。最后,它将逻辑磁盘的设备ID和磁盘驱动器的媒体类型存储在drives_dict字典中。

遍历字典,查找特定媒体类型的逻辑磁盘:

1
2
3
for key, value in drives_dict.items():
if value in ['Removable Media', 'External hard disk media']:
print(key)

这段代码遍历drives_dict字典中的每个键值对,检查媒体类型是否为“可移动媒体”或“外部硬盘媒体”。如果是,它打印出逻辑磁盘的设备ID