Why %processor_architecture% always returns x86 instead of AMD64

后端 未结 9 2290
被撕碎了的回忆
被撕碎了的回忆 2020-11-29 03:03

I am trying to retrieve the environment variable to detect whether the system is 32 or 64 bit. But on 64 bit server the environment variable %processor_architecture%

9条回答
  •  萌比男神i
    2020-11-29 03:24

    You may be getting the wrong environment variable. If your application is a 32-bit application running on a 64-bit OS the process version of this environment variable will return x86. If you want to find the architecture of the machine, you can grab it from the following registry entry:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE
    

    Or if you're using .NET, then you can use this call to get it:

    string arch = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE", 
        EnvironmentVariableTarget.Machine);
    

    From the command line you can try this:

    reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
    

    There is even a more simple solution using cmd:

    ECHO %PROCESSOR_ARCHITECTURE%
    

提交回复
热议问题