了解在 XP 嵌入式上运行

发布于 2024-08-04 10:29:55 字数 127 浏览 1 评论 0原文

有没有办法查明我的程序是否在嵌入式 XP 上运行?我尝试过 .NET System.Environment.OSVersion,但版本信息看起来就像“正常”Windows XP 的版本信息,除了次要版本号之外,并且依赖它对我来说似乎很脆弱。

Is there a way to find out if my program is running on XP embedded? I've tried .NET System.Environment.OSVersion, but the version information looks like that of a "normal" Windows XP, except for the minor version number, and relying on that seems to fragile to me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江南月 2024-08-11 10:29:55

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

1.调用API

BOOL GetVersionEx(LPOSVERSIONINFO lpVersionInfo);

OSVERSIONINFOEX 结构(即
此调用的输出)

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

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

2.注册表中的查询值

 [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 再次运行。这两种方法都可能适合您。

A Microsoft eMVP (Bing Chen) on Egg Head Cafe suggests GetVersionEx and a particular version registry key...

1. Call API

BOOL GetVersionEx(LPOSVERSIONINFO lpVersionInfo);

OSVERSIONINFOEX structure (which is
the output of this call)

One of the members is wSuiteMask (a
WORD variable).

Check the VER_SUITE_EMBEDDEDNT
(0x00000040) flag in this variable.

2. Query value in Registry

 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Product-Options]
Key Name:   ProductSuite Type:
MULTI_SZ Value: EmbeddedNT

(In XP Pro, it seems that no
content in this key)

While Helen Elcock suggests looking for the FBA registry value:

I check for for the DWORD registery value

[HKEY_LOCAL_MACHINE\SYSTEM\FBA]

You only get first boot assistant on embedded.

GetVersionEx seems like the more stable approach, because someone might remove the FBA key in an effort to save another couple bytes, but I'm not sure if removing that key would cause the FBA to run again anyway. You'll probably be fine with either approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文