1

有没有办法查明我的程序是否在 XP Embedded 上运行?我已经尝试过 .NET System.Environment.OSVersion,但版本信息看起来像“普通”Windows XP 的版本信息,除了次要版本号,依赖它对我来说似乎很脆弱。

4

1 回答 1

3

Egg Head Cafe 上的 Microsoft eMVP (Bing Chen) 建议使用 GetVersionEx 和特定版本的注册表项...

1.调用API

BOOL GetVersionEx(LPOSVERSIONINFO lpVersionInfo);

OSVERSIONINFOEX结构(这是此调用的输出)

其中一个成员是wSuiteMask(一个 WORD 变量)。

检查VER_SUITE_EMBEDDEDNT 此变量中的 (0x00000040) 标志。

2.在Registry中查询值

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Product-Options]
键名:ProductSuite 类型:
MULTI_SZ 值:EmbeddedNT
(在XP Pro中,这个键好像没有内容)

虽然 Helen Elcock 建议寻找 FBA 注册表值

我检查 DWORD 寄存器值

[HKEY_LOCAL_MACHINE\SYSTEM\FBA]

您只能在嵌入式上获得第一个启动助手。

GetVersionEx 似乎是更稳定的方法,因为有人可能会删除 FBA 密钥以节省另外几个字节,但我不确定删除该密钥是否会导致 FBA 再次运行。两种方法都可以。

于 2009-09-09T11:16:06.410 回答