Search code examples
c++registry

Correct way to check if Windows is 64 bit or not, on runtime? (C++)


bool Win64bit = (sizeof(int*) == 8) ? 1 : 0;

I need this so my app can use Windows registry functions properly (or do i need?).

So am i doing it right ?


Solution

  • Here's what Raymond Chen suggests in his blog at https://devblogs.microsoft.com/oldnewthing/20050201-00/?p=36553:

    BOOL Is64BitWindows()
    {
        #if defined(_WIN64)
            return TRUE;  // 64-bit programs run only on Win64
        #elif defined(_WIN32)
            // 32-bit programs run on both 32-bit and 64-bit Windows
            // so must sniff
            BOOL f64 = FALSE;
            return IsWow64Process(GetCurrentProcess(), &f64) && f64;
        #else
            return FALSE; // Win64 does not support Win16
        #endif
    }