Seçilen cevap, sorulan şeyi yapmadığı için yanlış. Bir işlemin x64 işletim sisteminde çalışan bir x86 işlemi olup olmadığını denetler; bu nedenle, x64 işletim sistemi üzerinde bir x64 işlemi veya x86 işletim sistemi üzerinde çalışan x86 işlemi için "yanlış" döndürür.
Ayrıca, hataları doğru şekilde işlemez.
İşte daha doğru bir yöntem:
internal static class NativeMethods
{
// see https://msdn.microsoft.com/en-us/library/windows/desktop/ms684139%28v=vs.85%29.aspx
public static bool Is64Bit(Process process)
{
if (!Environment.Is64BitOperatingSystem)
return false;
// if this method is not available in your version of .NET, use GetNativeSystemInfo via P/Invoke instead
bool isWow64;
if (!IsWow64Process(process.Handle, out isWow64))
throw new Win32Exception();
return !isWow64;
}
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool IsWow64Process([In] IntPtr process, [Out] out bool wow64Process);
}