如何获得序列号有两个很好的例子:How to get motherboard id or serial number in Delphi?
他们都为我工作(Windows 7)。但对于2个人他们没有!
选项1(Microsoft WMIScripting Library)返回一个无法在异常中处理的错误! (我试图在异常中使用我的代码,但没有执行)。 OS Windows 7:
选项2(Windows XP) - 不返回任何内容:没有错误,没有序列号。
任何人都可以解释它为什么并且是否有工作代码来执行此操作?
在该链接中有一条评论:“@ PRUZ你知道我的第二条评论吗?我在其他计算机上检查相同的代码,返回'无'。它有什么关系? - Himadri”
感谢!!!
答案 0 :(得分:4)
@maxfax,第一个示例代码在Windows xp中不起作用,因为使用了自Windows Vista以来可用的ItemIndex
属性以获取更多详细信息,请查看此article (Be careful when you import the Microsoft WMIScripting Library
)。第二个代码段必须在任何Windows系统中正常工作,因为直接使用属性的名称访问WMI属性。现在,如果第二个选项没有在任何机器中检索序列号,那是因为WMI提供程序不公开此属性的信息。另请注意,某些虚拟机(如VMWARE)会将None
报告为序列号。
<强>更新强>
我刚在博客上写了一篇关于如何阅读SMBios(Reading the SMBios Tables using Delphi
)的文章,使用这种方法可以直接从SMBios表中获取主板的序列号。