내 응용 프로그램이 32 비트 또는 64 비트 응용 프로그램으로 실행 중인지 어떻게 알 수 있습니까?

StackOverflow https://stackoverflow.com/questions/266082

  •  06-07-2019
  •  | 
  •  

문제

내 응용 프로그램 (Visual Studio 2008에서 컴파일 된 응용 프로그램이 모든 CPU) 32 비트 또는 64 비트 응용 프로그램으로 실행 중입니까?

도움이 되었습니까?

해결책

if (IntPtr.Size == 8) 
{
    // 64 bit machine
} 
else if (IntPtr.Size == 4) 
{
    // 32 bit machine
}

다른 팁

사용하는 경우 .그물 4.0, 그것은 현재 프로세스의 한 라이너입니다.

Environment.Is64BitProcess

참조: Environment.is64 비트 프로세스 속성 (MSDN)

이 코드를 찾았습니다 Martijn Boven 그것은 트릭을합니다 :

public static bool Is64BitMode() {
    return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8;
}

Microsoft 올인원 코드 프레임 워크 의이 코드 샘플은 다음과 같은 질문에 답할 수 있습니다.

C# (CSPLATFormDetector)에서 플랫폼을 실행하는 프로세스 감지

CSPLATFORMDETECTOR 코드 샘플은 플랫폼 감지와 관련된 다음 작업을 보여줍니다.

  1. 현재 운영 체제의 이름을 감지하십시오. (예 : "Microsoft Windows 7 Enterprise")
  2. 현재 운영 체제의 버전을 감지하십시오. (예 : "Microsoft Windows NT 6.1.7600.0")
  3. 현재 운영 체제가 64 비트 운영 체제인지 확인하십시오.
  4. 현재 프로세스가 64 비트 프로세스인지 확인하십시오.
  5. 시스템에서 실행되는 임의의 프로세스가 64 비트인지 확인하십시오.

현재 실행중인 프로세스가 64 비트 프로세스인지 확인하려면 Environment.is64 비트 프로세스 .NET Framework 4의 새로운 속성 4.

시스템에서 실행되는 임의의 응용 프로그램이 64 비트 프로세스인지 여부를 감지하려면 OS 비트를 결정해야하며 64 비트 인 경우 전화하십시오. IsWow64Process() 대상 프로세스 핸들과 함께 :

static bool Is64BitProcess(IntPtr hProcess)
{
    bool flag = false;

    if (Environment.Is64BitOperatingSystem)
    {
        // On 64-bit OS, if a process is not running under Wow64 mode, 
        // the process must be a 64-bit process.
        flag = !(NativeMethods.IsWow64Process(hProcess, out flag) && flag);
    }

    return flag;
}

.NET 표준에서 사용할 수 있습니다 System.Runtime.InteropServices.RuntimeInformation.OSArchitecture

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top