为什么%processor_architecture%总是返回x86而不是AMD64

ali*_*ce7 28 windows command-line batch-file

我正在尝试检索环境变量以检测系统是32位还是64位.但是在64位服务器上,环境变量%processor_architecture%正在返回x86而不是AMD64.

有没有人对此有任何线索?

Ger*_*ald 50

您可能获得了错误的环境变量.如果您的应用程序是在64位操作系统上运行的32位应用程序,则此环境变量的进程版本将返回x86.如果要查找计算机的体系结构,可以从以下注册表项中获取它:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是.NET,那么您可以使用此调用来获取它:

string arch = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE", 
    EnvironmentVariableTarget.Machine);
Run Code Online (Sandbox Code Playgroud)

从命令行,您可以尝试这样做:

reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Run Code Online (Sandbox Code Playgroud)

甚至有一个更简单的解决方案cmd:

ECHO %PROCESSOR_ARCHITECTURE%
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.我刚遇到这个问题.MS - 一群脑外科医生.一个变量,它告诉您当前正在执行的二进制*的目标平台*.鱼,自行车,有用的,etbloodycetra. (4认同)

Pat*_*uff 10

您也可以从环境变量中获取此信息PROCESSOR_ARCHITEW6432.有关详细信息,请参阅文章.


bob*_*nce 8

你实际上是在运行64位版本的Windows吗?如果您在支持64位的CPU上运行32位Windows,您仍然可以获得x86.

  • 我实际上是运行64位版本.我可以从My COmputer属性中看到它. (2认同)

Sky*_*RaT 6

假设 64 位 PC 安装了 64 位 Windows。

%processor_architecture%仅当在 32 位程序中获取值时才返回x86 。在 64 位程序中,它正确返回AMD64

示例:执行echo %processor_architecture%自:

  • 32位总指挥官
  • 64位资源管理器