重要
设备元数据已弃用,并将在 Windows 的将来版本中删除。 有关替代功能的信息,请参阅驱动程序包容器元数据。
设备和打印机将计算机识别为 设备容器。 因此,可以使用指定唯一硬件 ID 值的 HardwareID XML 元素在设备元数据包中标识计算机。 计算机的此硬件 ID 值(有时称为计算机硬件 ID 或 CHID)可以指定系统管理 BIOS(SMBIOS)字段数据的组合。
与其他设备容器 的硬件 ID 不同,每次系统启动时,计算机的硬件 ID 都会由 Windows 生成。 计算机的硬件 ID 可以通过运行 Windows 7、Windows 8 和 Windows 8.1 的 Windows 驱动程序工具包(WDK)中包含的 ComputerHardwareIds 工具(ComputerHardwareIDs.exe)来生成。 从 Windows 10 开始,ComputerHardwareIds 工具包含在软件开发工具包(SDK)中。
ComputerHardwareIds 工具为计算机生成一组硬件 ID,该 ID 基于系统系统管理系统 BIOS(SMBIOS)中字段的信息。 下表描述了这些 SMBIOS 字段。
| 字段名 | 结构名称和类型 | SMBIOS 规范版本 | Offset | 长度 | 价值 | DESCRIPTION |
|---|---|---|---|---|---|---|
| 制造者 | 系统信息(类型 1) | 2.0+ | 04小时 | BYTE | STRING | dmiStrucBuffer 数组中以 null 结尾的字符串的索引。 此字符串指定计算机制造商的名称。 |
| 家庭 | 系统信息(类型 1) | 2.4+ | 1Ah | BYTE | STRING | dmiStrucBuffer 数组中以 null 结尾的字符串的索引。 此字符串指定特定计算机所属的系列。 一个系列是指一组计算机,这些计算机在硬件或软件方面相似但并不完全相同。 通常,一个系列由不同的计算机模型组成,这些模型具有不同的配置和定价点。 同一系列中的计算机通常具有类似的品牌和化妆品功能。 |
| 产品名称 | 系统信息(类型 1) | 2.0+ | 05h | BYTE | STRING | dmiStrucBuffer 数组中以 null 结尾的字符串的索引。 此字符串指定计算机的产品名称。 |
| 供应商 | BIOS 信息(类型 0) | 2.0+ | 04小时 | BYTE | STRING | dmiStrucBuffer 数组中以 null 结尾的字符串的索引。 此字符串指定 BIOS 供应商的名称。 |
| BIOS 版本 | BIOS 信息(类型 0) | 2.+0 | 05h | BYTE | STRING | dmiStrucBuffer 数组中以 null 结尾的字符串的索引。 此字符串可以包含有关处理器核心和 OEM 版本的信息。 |
| 系统 BIOS 主要版本 | BIOS 信息(类型 0) | 2.4+ | 14h | BYTE | 各不相同。 | 系统 BIOS 的重大发布。 |
| 系统 BIOS 小版本发布 | BIOS 信息(类型 0) | 2.4+ | 15h | BYTE | 多种多样 | 系统 BIOS 的次要版本。 |
| 机壳类型 | 系统机箱(类型 3) | 2.0+ | 05h | BYTE | 多种多样 | 系统外壳或机箱类型。 |
| SKU 编号 | SKU 编号(类型 1) | 2.4+ | 19h | BYTE | STRING | 要出售的特定计算机配置的识别。 |
| 基板制造商 | 制造商(类型 2) | 04小时 | BYTE | STRING | 以 null 结尾的字符串数。 此字符串标识基板制造商,其中基板 – 板类型为 0Ah(主板)。 | |
| Baseboard 产品 | 产品(类型 2) | 05h | BYTE | STRING | 以 null 结尾的字符串数。 此字符串标识基板的产品名称,其中基板 – 板类型为 0Ah(主板)。 |
有关 dmiStrucBuffer 数组和 SMBIOS 字段的详细信息,请参阅分布式管理工作队 (DMTF ) 网站上的系统管理 BIOS (SMBIOS) 规范。
当 ComputerHardwareIds 工具运行时,它会从 SMBIOS 信息创建唯一的硬件 ID。 每个硬件 ID 都是 GUID ,通过连接 SMBIOS 字段中的值来创建。
下表显示了用于在 Windows 7、Windows 8、Windows 8.1 和 Windows 10 中形成每个硬件 ID 的 SMBIOS 字段。
重要
仅当用于生成 HardwareID 的每个单独 SMBIOS 字段在系统的 SMBIOS 数据中填充时,才会生成每台计算机 HardwareID。
| HWID | Windows 7 |
|---|---|
| HardwareID-0 | 制造商 + 系列 + 产品名称 + 供应商 + BIOS 版本 + 系统 BIOS 主要版本 + 系统 BIOS 次要版本 |
| HardwareID-1 | 制造商 + 产品名称 + BIOS 供应商 + BIOS 版本 + 系统 BIOS 主要版本 + 系统 BIOS 次要版本 |
| HardwareID-2 | 制造商 + 系列 + 产品名称 |
| HardwareID-3 | 制造商 + 产品名称 |
| HardwareID-4 | 制造商 + 家族 |
| HardwareID-5 | 制造商 + 机箱类型 |
| HardwareID-6 | 制造者 |
| HWID | Windows 8、Windows 8.1 |
|---|---|
| HardwareID-0 | 制造商 + 系列 + 产品名称 + SKU 编号 + BIOS 供应商 + BIOS 版本 + BIOS 主要版本 + BIOS 次要版本 |
| HardwareID-1 | 制造商 + 系列 + 产品名称 + BIOS 供应商 + BIOS 版本 + BIOS 主要版本 + BIOS 次要版本 |
| HardwareID-2 | 制造商 + 产品名称 + BIOS 供应商 + BIOS 版本 + BIOS 主要版本 + BIOS 次要版本 |
| HardwareID-3 | 制造商 + 系列 + 产品名称 + SKU 编号 |
| HardwareID-4 | 制造商 + 系列 + 产品名称 |
| HardwareID-5 | 制造商 + SKU 编号 |
| HardwareID-6 | 制造商 + 产品名称 |
| HardwareID-7 | 制造商 + 系列 |
| HardwareID-8 | 制造商 + 机壳类型 |
| HardwareID-9 | 制造者 |
| HWID | Windows 10操作系统 |
|---|---|
| HardwareID-0 | 制造商 + 系列 + 产品名称 + SKU 编号 + BIOS 供应商 + BIOS 版本 + BIOS 主要版本 + BIOS 次要版本 |
| HardwareID-1 | 制造商 + 系列 + 产品名称 + BIOS 供应商 + BIOS 版本 + BIOS 主要版本 + BIOS 次要版本 |
| HardwareID-2 | 制造商 + 产品名称 + BIOS 供应商 + BIOS 版本 + BIOS 主要版本 + BIOS 次要版本 |
| HardwareID-3 | 制造商 + 系列 + 产品名称 + SKU 编号 + 基板制造商 + 基板产品 |
| HardwareID-4 | 制造商 + 系列 + 产品名称 + SKU 编号 |
| HardwareID-5 | 制造商 + 系列 + 产品名称 |
| HardwareID-6 | 制造商 + SKU 编号 + 基板制造商 + 基板产品 |
| HardwareID-7 | 制造商 + SKU 编号 |
| HardwareID-8 | 制造商 + 产品名称 + 基板制造商 + 基板产品 |
| HardwareID-9 | 制造商 + 产品名称 |
| HardwareID-10 | 制造商 + 系列 + 基板制造商 + 基板产品 |
| HardwareID-11 | 制造商 + 系列 |
| HardwareID-12 | 制造商 + 机箱类型 |
| HardwareID-13 | 制造商 + 基板制造商 + 基板产品 |
| HardwareID-14 | 制造者 |
每个硬件 ID 字符串都使用 SHA-1 哈希算法转换为 GUID。
将计算机硬件 ID 与电脑设备元数据包配合使用
对于 Windows 7 系统,强烈建议供应商在选择 硬件 ID 值以用作计算机的 HardwareID XML 元素的值时执行以下操作。
如果设备元数据包与具有特定制作、系列和型号的计算机匹配,请使用 HardwareID-3 或 HardwareID-4 作为第一选择。 这样,元数据包就可以匹配到指定的计算机,从而为该计算机提供最准确的元数据。
如果设备元数据包涵盖整个计算机系列,请使用 HardwareID-5 作为第二个选项。 在这种情况下,计算机系列是独一无二的,并且不使用多个生产线的品牌。
如果设备元数据包涵盖所有计算机或具有特定机箱类型的计算机,请使用 HardwareID-6 或 HardwareID-7 作为第三选择。
注释
对于 Windows 7 电脑设备元数据, HardwareID-1 和 HardwareID-2 保留供将来使用。 请勿将其用于计算机的硬件 ID。
注释
对于 Windows 8 电脑设备元数据,请勿将 HardwareID-1、HardwareID-2、HardwareID-3 作为计算机的硬件标识符。 HardwareID-1、 HardwareID-2、 HardwareID-3 保留供将来使用。 请改用 HardwareID-4、HardwareID-5、HardwareID-6、HardwareID-7、HardwareID-8、HardwareID-9 和 HardwareID-10。
若要指定硬件 ID 适用于计算机设备容器,请使用以下规则:
- 用“{”和“}”字符分隔硬件 ID 字符串。
- 在硬件 ID 字符串前面添加前缀“ComputerMetadata\”。
下面是计算机的 HardwareID XML 元素的示例:
DOID:ComputerMetadata\{c20d5449-511e-4cb5-902a-a541239322aa}
有关 HardwareID XML 元素的格式要求的详细信息,请参阅 HardwareID。