首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主板ID - WMI C++ -可靠吗?

主板ID - WMI C++ -可靠吗?
EN

Stack Overflow用户
提问于 2014-05-15 10:25:09
回答 1查看 5.5K关注 0票数 4

我在C++类中使用WMI检索主板的序列号。查询如下:

代码语言:javascript
复制
"SELECT SerialNumber FROM Win32_BaseBoard"

我自己编写了这个查询,所以我不确定它是否正确,但它确实返回了一些内容:/9637CW1/CN1296131Q0BA8/。返回的字符串在多台计算机上格式相同,因此我假设查询是正确的。

我的问题是:我真的在这里查询主板序列号吗?因为我看到了另一个名为"Win32_MotherboardDevice"的类(它没有“序列号”属性)。用它作为计算机标识符是个好主意吗?我目前正在使用HDD序列号,但我认为使用更可靠的组件(如主板)的序列号会更好,因为磁盘比主板更有可能被更改。

谢谢您:)

EN

回答 1

Stack Overflow用户

发布于 2015-07-12 15:25:35

我所发现的是,检索主板的序列号可能会产生非常不同的结果,取决于制造商和分销渠道。一些向最终客户销售并拥有良好的设备维修支持流程的制造商将一致地设置WMI的序列号信息。提供OEM类型设备的其他制造商将依靠OEM设置序列号。

由于序列号位于基于制造商的特定域或名称空间内,因此不同的制造商可能使用了相同的序列号,因此您确实需要同时知道制造商和序列号,这是不可能的。

一些销售点终端关于序列号是一致的,在主板失效的情况下,更换主板程序的一部分是将更换板的序列号设置为被替换板的序列号。这意味着一些设备的序列号可能与LAN欺骗类似。

WMI查询将对所提供的序列号产生影响。除了序列号之外,还有一个资产标记属性。

查看Win32_MotherboardDevice的文档并尝试一些属性,那里似乎没有多少有用的数据,当然也没有类似于唯一序列号的东西。

在带有Windows的戴尔笔记本电脑上,当我运行一个C++应用程序,使用WMI查看几个不同Select WMI查询几个不同属性的结果时,我得到以下结果:

代码语言:javascript
复制
Connected to ROOT\CIMV2 WMI namespace

Query for SELECT * FROM Win32_SystemEnclosure
  SMBIOS SerialNumber: 49495G1
  SMBIOS Name: System Enclosure
  SMBIOS SMBIOSAssetTag:
  SMBIOS Manufacturer: Dell Inc.

Query for SELECT * FROM Win32_BaseBoard
  SMBIOS SerialNumber: .49495G1.CN486438441035.
  SMBIOS Product: 0UY141
  SMBIOS Name: Base Board
  SMBIOS Manufacturer: Dell Inc.

Query for SELECT * FROM Win32_BIOS
  SMBIOS SerialNumber: 49495G1
  SMBIOS Name: Phoenix ROM BIOS PLUS Version 1.10 A10
  SMBIOS Manufacturer: Dell Inc.

Query for SELECT * FROM Win32_ComputerSystem
  SMBIOS Name: CIT-31204E1FF03
  SMBIOS Manufacturer: Dell Inc.

Query for SELECT * FROM Win32_ComputerSystemProduct
  SMBIOS Name: Latitude D830
  SMBIOS IdentifyingNumber: 49495G1
  SMBIOS UUID: 4C4C4544-0039-3410-8039-B4C04F354731

看看这台笔记本电脑的底部,我看到一个贴纸,上面有条形码,打印上写着“服务标签49495G1”,所以对于这台笔记本电脑来说,检索的序列号是服务标签标识符。我可以去戴尔的网站,并在支持区查找这个服务标签。

一个新的销售点终端意味着转售与POS就绪7版本的Windows提供以下输出与相同的C++ WMI应用程序。这类似于我自己从购买的部件中构建的PC的输出,它也没有PC运行Windows8.1的序列号。

代码语言:javascript
复制
Connected to ROOT\CIMV2 WMI namespace

Query for SELECT * FROM Win32_SystemEnclosure
  SMBIOS SerialNumber: None
  SMBIOS Name: System Enclosure
  SMBIOS SMBIOSAssetTag: None
  SMBIOS Manufacturer: To Be Filled By O.E.M.

Query for SELECT * FROM Win32_BaseBoard
  SMBIOS SerialNumber: None
  SMBIOS Product: EIN70-SAM
  SMBIOS Name: Base Board
  SMBIOS Manufacturer: INTEL Corporation

Query for SELECT * FROM Win32_BIOS
  SMBIOS SerialNumber: None
  SMBIOS Name: BIOS Date: 10/15/13 20:06:15 Ver: 04.06.05
  SMBIOS Manufacturer: American Megatrends Inc.

Query for SELECT * FROM Win32_ComputerSystem
  SMBIOS Name: GENPOSA-1
  SMBIOS Manufacturer: To be filled by O.E.M.

Query for SELECT * FROM Win32_ComputerSystemProduct
  SMBIOS Name: EIN70-SAM
  SMBIOS IdentifyingNumber: None
  SMBIOS UUID: 03000200-0400-0500-0006-000700080009
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23675550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档