Python 如何在Windows中获取物理驱动器

Python 如何在Windows中获取物理驱动器,python,windows,Python,Windows,我正在用Python编写一个内核32 dll的包装器,所以我可以使用这个dll的任何函数,比如GetLogicalDrives()。我正在尝试获取物理驱动器的信息,即使它们没有安装。我见过类似的问题,但我需要未安装驱动器的信息。我看到的所有方法都需要在设备中安装目录或文件,但如果没有安装,我就无法安装,因此问题是: 是否有一种方法可以为我提供系统中物理驱动器的列表,即使它们没有安装 我必须说,使用Windows注册表,我已经获得了“HKEY_LOCAL_MACHINE\Hardware\Devi

我正在用Python编写一个内核32 dll的包装器,所以我可以使用这个dll的任何函数,比如GetLogicalDrives()。我正在尝试获取物理驱动器的信息,即使它们没有安装。我见过类似的问题,但我需要未安装驱动器的信息。我看到的所有方法都需要在设备中安装目录或文件,但如果没有安装,我就无法安装,因此问题是:

是否有一种方法可以为我提供系统中物理驱动器的列表,即使它们没有安装


我必须说,使用Windows注册表,我已经获得了“HKEY_LOCAL_MACHINE\Hardware\Devicemap\Scsi\Scsi Port x”中的物理驱动器数量,因为在该项中,您可以看到驱动器的数量,包括cd-rom设备或软盘设备。但我还需要未安装设备的大小,所以…

FindFirstVolume和FindNextVolume可能是您需要的


例如,搜索卷并列出每个卷的所有路径,乍一看,似乎允许某些卷没有这样的路径。也就是说,我从未使用过这个。

使用Tim Golden的wmi模块。以下是条目:

印刷品

C: 99928924160 14214135808 D: None None E: 499983122432 3380903936 S: 737329123328 362274299904 T: 737329123328 9654988800 C:999289224160 14214135808 D:没有 E:499983122432 3380903936 S:737329123328 362274299904 电话:737329123328965498800
但是,请注意,没有关于我的D:驱动器(DVD驱动器,未安装)的信息。我认为您无法获取未安装的可移动媒体的大小信息。

您也可以尝试使用win32 module for Python。

win32\u DiskDrivewmi类怎么样

c = wmi.WMI()

dd = c.Win32_DiskDrive()[0]

print.dd

有关Win32_DiskDrive的更多信息

谢谢,但我已经使用了这些方法,它们会遍历卷,而不是硬盘。此外,我使用FindNextVolume返回的卷名调用QueryDosDeviceW方法,并获得以下内容:卷名\\?\volume{3118a200-a4ae-11…}\Physical disk:\Device\HarddiskVolume1卷名\\?\volume{3118a202-a4ae-11…}\Physical disk:\Device\HarddiskVolume2卷名\\?\volume{4f569545-a4af-11…}\物理磁盘:\Device\CdRom0 Volume name\\?\Volume{4f569544-a4af-11…}\Physical disk:\Device\Floppy0,这样就不会出现未安装的硬盘。我想我明白了。卷是分区,但您需要实际的磁盘,即使它们上还没有分区。出于好奇,我做了一些研究,但发现的都是DDK函数,比如SetupDiEnumDeviceInfo。听起来像是死路一条,但OTOH,diskpart.exe似乎链接到了该函数。我相信Roman询问的是物理磁盘而不是逻辑磁盘。尝试使用以下方法:对于w.query中的h(“从Win32_DiskDrive中选择*):
c = wmi.WMI()

dd = c.Win32_DiskDrive()[0]

print.dd