机器没什么特别的。之前几台机器,也是这样的。
一、字段「有时显示 Default string、有时显示为空」的原因 核心结论硬件的真实值始终是 Default string,显示为空不是值真的变成了空字符串,而是不可见的回车 / 换行控制符导致的前端渲染异常,属于 “肉眼看起来空、实际字符串有内容” 的假象。
原理与证据 不可见控制符随机混入Web 环境通过 COM 组件读取 WMI 时,会随机在字符串尾部残留回车符 \r(ASCII 0x0D)或换行符 \n(ASCII 0x0A): 纯文本 Default string(14 字节)→ 单元格正常显示文字 带回车 Default string\r(15 字节)→ \r 会让光标回到行首,文字被自身覆盖,单行单元格看起来就是空白 带回车换行 Default string\r\n(16 字节)→ 文字折行到第二行,超出单元格显示范围,看起来也是空白 直接佐证
表格中同样显示 Default string 的行,机器码却完全不同—— 说明肉眼看到的字符串一致,但实际参与计算的字节内容不同(多了看不见的控制符),这是最核心的证据。
反过来,部分行字段显示为空,但机器码和正常显示的行完全一致,也说明值本身没有变,只是渲染出来看不见。
彻底修复方案
在生成机器码的代码中,对所有硬件字段做标准化清洗后再参与哈希: