如何以编程方式确定 Windows PE 版本?

How can I programmatically determine Windows PE version?

我的应用程序需要确定它是否在 Windows PE 上 运行。

已弃用的 GetVersionEx function nor the preferred alternative Version Helper APIs 均未提供任何指示我是否在 WinPE 上运行,仅指示 OS.

的版本

This reference 列出了 WinPE 的兼容 API,因此我需要能够将我的应用程序限制为这些 API。

如何以编程方式从我的应用程序确定我是否在 WinPE 上,以及哪个 PE 版本是 运行?

如果您只需要确定您是否是 运行 WinPE,您可以检查 HKLM\System\CurrentControlSet\ControlHKLM\System\ControlSet001\Control 中是否存在密钥 MiniNT。如果存在,则您使用的是 WinPE 2.x 或更高版本。

MSDN docs here 中引用,您可以在注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinPE 中查看您 运行 的 Windows PE 版本。该参考还提供了每个版本将为您提供的 table 特性和功能。

对于 2.0 之前非常旧的 Windows/WinPE 版本,请检查 %SYSTEMROOT%\SYSTEM32\FACTORY.EXE 的版本。