如何在python中获取硬盘驱动程序的序列号

时间:2012-03-13 11:41:18

标签: python windows wmi

我尝试使用wmi来获取硬盘的序列号。我做的是这个:

启动ipython并使用这种方式获取序列号:

import wmi
c = wmi.WMI()
for x in c.Win32_PhysicalMedia():
    print x

结果如下:

instance of Win32_PhysicalMedia
{
    SerialNumber = "2020202020202020202020205635514d385a5856";
    Tag = "\\\\.\\PHYSICALDRIVE0";
};

但我的电脑是win7,我以管理员权限启动ipython并再次做同样的事情,但现在结果不同了:

instance of Win32_PhysicalMedia
{
    SerialNumber = "            5VMQZ8VX";
    Tag = "\\\\.\\PHYSICALDRIVE0";
};

我猜第二个结果更像是一个正确的结果。 那么有人能告诉我一个正确的方法来获取Windows上的序列号,包括XP,Vista,Win7,Win8?

我发现许多人使用CreateFileA和DeviceIoControl来获取序列号。

2 个答案:

答案 0 :(得分:0)

>>> import binhex
>>> binascii.a2b_hex("2020202020202020202020205635514d385a5856")
'            V5QM8ZXV'

备用字符被交换......看起来它们可能是相同的序列号。

答案 1 :(得分:0)

比以往任何时候都晚,我希望这对其他人有帮助。 我从不知道从哪里拿走的。

import wmi

c = wmi.WMI()
hddSerialNumber = c.Win32_PhysicalMedia()[0].wmi_property('SerialNumber').value.strip()
print(hddSerialNumber)