有没有办法查明我的程序是否在 XP Embedded 上运行?我已经尝试过 .NET System.Environment.OSVersion,但版本信息看起来像“普通”Windows XP 的版本信息,除了次要版本号,依赖它对我来说似乎很脆弱。
问问题
1211 次
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 类型:(在XP Pro中,这个键好像没有内容)
MULTI_SZ 值:EmbeddedNT
虽然 Helen Elcock 建议寻找 FBA 注册表值:
我检查 DWORD 寄存器值
[HKEY_LOCAL_MACHINE\SYSTEM\FBA]
您只能在嵌入式上获得第一个启动助手。
GetVersionEx 似乎是更稳定的方法,因为有人可能会删除 FBA 密钥以节省另外几个字节,但我不确定删除该密钥是否会导致 FBA 再次运行。两种方法都可以。
于 2009-09-09T11:16:06.410 回答