Windows 64 bit olup olmadığını .Net ile nasıl anlarım?

alattin (17125) 11 yıl önce sordu

C# ile yazılmış bir Windows Forms uygulmasında aşağıdaki kod çalışan işletim sistemi ile ilgili gerekli bilgiyi veriyor

string os_platform = System.Environment.OSVersion.Platform.ToString();

Bu kod geriye "Win32NT" ifadesi döndürüyor.  Fakat çalışan işletim sistemi 32 bit veya 64 bit olsada geriye "Win32NT" dönüyor.

C# .Net ile yazılmış bir Windows uygulamasında, uygulamanın çalıştırıldığı bilgisayarın işletim sisteminin, Windows'un, 64 bit olup olmadığını nasıl anlarım?
 

Toplam 2 cevap


alattin (17125) 11 yıl önce cevapladı

Aşağıdaki kod çalışan Windows'un 64 bit olup olmayacağını belirleyecektir.

bool is64BitProcess = (IntPtr.Size == 8);
bool is64BitOperatingSystem = is64BitProcess || InternalCheckIsWow64();

[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool IsWow64Process(
    [In] IntPtr hProcess,
    [Out] out bool wow64Process
);

public static bool InternalCheckIsWow64()
{
    if ((Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor >= 1) ||
        Environment.OSVersion.Version.Major >= 6)
    {
        using (Process p = Process.GetCurrentProcess())
        {
            bool retVal;
            if (!IsWow64Process(p.Handle, out retVal))
            {
                return false;
            }
            return retVal;
        }
    }
    else
    {
        return false;
    }
}

 

masker (93) 10 yıl önce cevapladı
Environment.Is64BitOperatingSystem

bir diğer yöntem bool değer 64bit ise true değilse false döner.. yanlızca .Net 3.5 ve üstü sürümlerde çalışıyor..