是否有一种编程方式来确定支持哪些应用程序处理器架构?

Is there a programmatic way to determine which application processor architectures are supported?

我正在编写一组 PowerShell 函数,理论上可以 运行ing 在 x86AMD64ARMARM64 中PowerShell 进程。脚本函数将启动指定的可执行文件,但首先我想检查当前 Windows 安装是否实际支持可执行文件的“机器类型”。

示例:

有没有办法确定本机 OS 或其 WOW 子系统是否可以 运行 给定的可执行文件,而不是对一堆检查进行硬编码?

忽略 PowerShell 语言的细节并使用伪代码,理想的函数应该是这样的:


IsProcessorArchitectureAvailable(strProcessorArchitecture)


有办法吗?

IsWow64GuestMachineSupportedAPI可以判断WOW64是否关闭:

Apps that need to determine if WOW64 is turned off or not. For example, many apps assume x86-64 systems can always execute x86-32 code at all times, everywhere. Note that this ability does not exist on WinPE or Xbox, and it is an optional component in Server.

使用此 API 您还可以检查 ARM 架构,请参阅 Image File Machine Constants

还有 IsWow64Process2,returns 主机系统的本机架构。

要调用这些 API,您需要 P/Invoke 使用 PowerShell 中的 C#。

可以找到完整的 C# 示例 here and PowerShell example here