确定进程的位数
在 C# 中,确定特定进程是在 32 位模式还是 64 位模式下运行是通过各种方法实现。
IntPtr Size检查
最简单的方法涉及检查 IntPtr 数据类型的大小:
if (IntPtr.Size == 4) { // 32-bit process } else if (IntPtr.Size == 8) { // 64-bit process }
WOW64 检查
确定是否有其他进程在 64 位模拟器 (WOW64) 中运行,请考虑以下事项代码:
private static bool IsWin64Emulator(this Process process) { if ((Environment.OSVersion.Version.Major > 5) || ((Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor >= 1))) { bool retVal; return NativeMethods.IsWow64Process(process.Handle, out retVal) && retVal; } return false; // not on 64-bit Windows Emulator }
其中 NativeMethods.IsWow64Process 是 DLL 导入:
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool IsWow64Process([In] IntPtr process, [Out] out bool wow64Process);
以上是如何确定 C# 进程是 32 位还是 64 位?的详细内容。更多信息请关注PHP中文网其他相关文章!