如何在python中获取硬盘驱动器的序列号
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在python中获取硬盘驱动器的序列号,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1673字,纯文字阅读大概需要3分钟。
内容图文
![如何在python中获取硬盘驱动器的序列号](/upload/InfoBanner/zyjiaocheng/656/5d90a86b33c04385a7369c9aca8fd37a.jpg)
我试图使用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来获取序列号.
解决方法:
如果您使用的是Google“ Win32_PhysicalMedia”,第二个命中便是一个错误报告,由于我现在仔细阅读了所有内容,因此它似乎可以准确地描述您的问题(但据我所知没有提供修复):http://connect.microsoft.com/VisualStudio/feedback/details/623282/win32-physicalmedia-returns-incorrect-serial-number-on-vista-or-higher-when-run-as-standard-user
因此,您可能必须自己处理问题.这是我最初在此答案中写的:
看一下这两个字符串:
2020202020202020202020205635514d385a5856
5VMQZ8VX (yes there's a space in front)
请注意,第一个似乎是十六进制数. 0x20是空格字符.因此,第一个有很多空格,后跟几个字节的实际数据,这使得两个序列号的大小可比.
现在,使用http://www.dolcevie.com/js/converter.html这样的十六进制至ASCII转换器,并在第一个数字中打孔.你得到:
V5QM8ZXV
看看看起来有多相似?现在唯一的区别是字节顺序(字节顺序).
要一劳永逸地解决此问题,您需要告诉我们您认为这三个数字中的哪一个是序列号的“正确”表示(理想情况下,它将与驱动器上打印的内容匹配).一旦弄清楚自己的位置,就很容易在三种表示形式之间进行转换(显然取决于平台-可能取决于所使用的Python,WMI或Python WMI模块的版本).
内容总结
以上是互联网集市为您收集整理的如何在python中获取硬盘驱动器的序列号全部内容,希望文章能够帮你解决如何在python中获取硬盘驱动器的序列号所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。