1

我正在尝试从 Win32 用户模式应用程序(如果有任何差异,则为 MFC)获取 WinXP Embedded 32 位系统的 BIOS 序列号。

我正在尝试从成员“SerialNumber”的“Win32_BIOS”类中通过 WMI 获得相同的序列号。问题是我不能使用 WMI,因为它必须在没有安装 WMI 的旧系统上运行。

我们基本上有一系列机器,数据在这个 BIOS 字段中编码,因此用户无法更改,有时我们需要将这些信息输出到文件并发送给我们。

我找到了“GetSystemFirmwareTable”,但最低 Win 版本是 WinXP 64 位。WMI 是不可能的,我们已经有了从直接映射的物理地址读取它的代码,但问题是我们使用的允许我们映射这些物理地址的软件与我们的软件绑定在一起,我们的软件无法运行在这个特定用例(许可)的这个阶段。

据我所知,从用户模式应用程序映射物理硬件地址的唯一其他方法是深入研究驱动程序领域并将一些驱动程序库集成到应用程序中以允许它映射物理地址。

操作系统是否有某种卷影副本,我可以在没有大量配置的情况下访问?

4

1 回答 1

1

Windows XP 中的 NTVDM 映射物理内存的第一个 MiB,因此您应该能够在第一个 MB 中找到SMBIOS blob 并从中获取 BIOS 序列号。请参阅PDF 规范以获取更多参考。

于 2012-03-23T16:11:35.790 回答