Jad*_*ias 5 .net windows 64-bit system.diagnostics process
我试过了:
process.MainModule.FileName.Contains("x86")
Run Code Online (Sandbox Code Playgroud)
但它引发了x64进程的异常:
Win32Exception:只有部分ReadProcessMemory ou WriteProcessMemory请求完成
你需要通过P/Invoke 调用IsWow64Process:
[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 );
Run Code Online (Sandbox Code Playgroud)
这是一个让它更容易调用的助手:
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;
}
Run Code Online (Sandbox Code Playgroud)