How do I determine if a .NET application is 32 or 64 bit?

后端 未结 7 1016
天涯浪人
天涯浪人 2021-01-30 20:33

I have a .NET application that was supposed to be compiled as a 32-bit only application. I suspect my build server isn\'t actually doing it.

How do I determine if a .NE

7条回答
  •  清酒与你
    2021-01-30 21:17

    I use the following code:

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

    With:

    public static bool IsProcess64(Process process)
    {
        if ((Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor >= 1) || Environment.OSVersion.Version.Major >= 6) {
            bool ret_val;
    
            try {
                if (!WindowsAPI.IsWow64Process(process.Handle,out ret_val)) ret_val = false;
            } catch {
                ret_val = false;
            }
    
            if (!ret_val && IntPtr.Size == 8) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
    

    You can pass Process.CurrentProcess or similar to this.

提交回复
热议问题