【问题标题】:Delphi: bugs while getting motherboard serial numberDelphi:获取主板序列号时的错误
【发布时间】:2011-10-16 07:26:05
【问题描述】:

有两个很好的例子来获取序列号:How to get motherboard id or serial number in Delphi?

它们都为我工作(Windows 7)。但是对于 2 个人,他们没有!

选项 1(Microsoft WMIScripting 库)返回一个无法在异常中处理的错误! (我试图在异常中使用我的代码,但没有执行)。操作系统 Windows 7:

选项 2 (Windows XP) - 不返回任何内容:没有错误,没有序列号。

任何人都可以解释为什么会这样吗?是否有工作代码可以做到这一点?

该链接中有一条评论:“@PRUZ 你知道我的第二条评论吗?我在另一台计算机上检查了相同的代码,它返回‘none’。它有什么问题?——Himadri”

谢谢!!!

【问题讨论】:

  • -1,请解释一下,这对我来说很有趣:)

标签: delphi serial-number motherboard


【解决方案1】:

@maxfax,第一个示例代码在 Windows xp 中不起作用,因为使用了自 windows vista 以来可用的ItemIndex 属性以获取更多详细信息,请查看此article (Be careful when you import the Microsoft WMIScripting Library)。第二个 sn-p 必须在任何 Windows 系统中都可以正常工作,因为直接使用属性名称访问 WMI 属性。现在,如果第二个选项没有在任何机器上检索序列号,仅仅是因为 WMI 提供程序没有公开此属性的信息。作为旁注,一些虚拟机(如 VMWARE)将None 报告为序列号。

更新

我刚刚在我的博客上写了一篇关于如何读取 SMBios (Reading the SMBios Tables using Delphi) 的文章,使用这种方法可以直接从 SMBios 表中获取主板的序列号。

【讨论】:

  • 好的,我会在多台电脑上检查第二个选项并告诉你。谢谢!
  • 我已经在 3 台笔记本电脑上进行了测试。 Windows 7 显示“基本序列号”而不是普通编号。因此,五分之二的机器错误地检索了序列号。我不能依赖这种方法。还有其他方法吗?谢谢!
  • @maxfax,另一种方法是直接读取SMBIOS表并解析信息,检查这些WinApi函数EnumSystemFirmwareTablesGetSystemFirmwareTablemsdn.microsoft.com/en-us/library/ms724379%28VS.85%29.aspx
  • 如果您不介意,请举例说明如何使用该功能。谢谢!
  • 我很震惊。那两条鳕鱼是做什么的?有人说我第二个选项今天在两台机器上显示相同的序列号!!! 2个主板是华硕,一个是R5,另一个是R4!!!
猜你喜欢
  • 2011-04-06
  • 2011-01-30
  • 2017-09-14
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多