Вибрана відповідь невірна, оскільки вона не робить те, що було задано. Він перевіряє, чи процес - це процес x86, який працює на ОС 64 x; тому він поверне "false" для x64 процесу в x64 OS або x86 процесу, що працює на x86 OS.
Крім того, він не обробляє помилки правильно.
Ось більш правильний метод:
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);
}