在没有WMI的情况下获取BIOS序列号 [英] Getting BIOS Serial Number without WMI

查看:371
本文介绍了在没有WMI的情况下获取BIOS序列号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正试图从Win32用户模式应用程序(如果有区别的话,是MFC)获取WinXP Embedded 32位系统的BIOS序列号.

我正在尝试获取与成员"SerialNumber"中的"Win32_BIOS"类通过WMI获得的序列号相同的序列号.问题是我不能使用WMI,因为它必须在未安装WMI的旧系统上运行.

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

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

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

操作系统是否提供了某种卷影副本,使我无需大量配置即可访问?

Windows XP中的

解决方案

NTVDM映射了物理内存的第一个MiB,因此您应该能够找到 PDF规范.

I'm attempting to get the serial number of the BIOS for a WinXP Embedded 32-bit system from a Win32 user mode application (MFC if that makes any diff).

I'm trying to get the same serial number that you can get via WMI from the 'Win32_BIOS' class from member "SerialNumber." The problem is that I can't use WMI as this will have to run on older systems that don't have WMI installed.

We basically have a series of machines with data encoded in this BIOS field so it can't be changed by the users, and we sometimes need this information to be output to a file and sent to us.

I've found 'GetSystemFirmwareTable', but the minimum Win version is WinXP 64-bit. WMI is out of the question, and we already have code to read it from a directly mapped physical address, but the problem is that the software we use that allows us to map those physical addresses is tied to our software, and our software cannot run at this stage in this particular use case (licensing).

As far as I've found, the only other way to map a physical hardware address from a user-mode application is to delve into driver territory and integrate some driver libraries into the application to allow it to map physical addresses.

Is there some kind of shadow copy that the OS makes that I can access without a huge amount of configuration?

解决方案

NTVDM in Windows XP map the first MiB of physical memory so you should be able to find the SMBIOS blob in that first megabyte and get the BIOS serial number from there. See the PDF specification for further reference.

这篇关于在没有WMI的情况下获取BIOS序列号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆