es necesario llamar a IsWow64Process a través de P/Invoke:
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWow64Process([In] IntPtr processHandle, [Out, MarshalAs(UnmanagedType.Bool)] out bool wow64Process);
Aquí es un ayudante para que sea un poco más fácil para llamar:
public static bool Is64BitProcess(this Process process)
{
if (!Environment.Is64BitOperatingSystem)
return false;
bool isWow64Process;
if (!IsWow64Process(process.Handle, out isWow64Process))
throw new Win32Exception(Marshal.GetLastWin32Error());
return !isWow64Process;
}
Usted está haciendo la pregunta equivocada. La verdadera pregunta debería ser: "¿Cómo metí la llamada a ReadProcessMemory?" –
@Hans No me importa en absoluto esta llamada, siempre que se responda el título de la pregunta. El problema que enumeré es solo un método para responder el título. –
posible duplicado de [Cómo saber que un proceso es de 32 bits o de 64 bits mediante programación] (http://stackoverflow.com/questions/1953377/how-to-know-a-process-is-32-bit-or -64-bit-programmatically) –