Programming/Windows.C#
64bit 구별 방법
알레아
2011. 1. 3. 12:10
반응형
개발을 하다보면 32bit와 64bti용으로 제작 해야 될 때가 많죠~
그럴때 해당 PC가 어떤 플랫폼인지 구별해야할 때가 있는데 그럴때 사용하는 코드입니다.
방법1)
다음과 같이 kernel32에서 64bit인지 프로세스를 얻어내서 사용하는 방법이 있습니다.
[DllImport("kernel32.dll")]
public static extern bool IsWow64Process(System.IntPtr hProcess, out bool lpSystemInfo);
public static bool IsWow64Process1
{
get
{
bool retVal = false;
IsWow64Process(System.Diagnostics.Process.GetCurrentProcess().Handle, out retVal);
return retVal;
}
}
방법2)
IntPtr의 사이즈를 얻어서 구별하는 방법이 있습니다.
public bool Is64BitComputer()
{
if (IntPtr.Size == 8)
return true;
else
return false;
}
방법1과 2를 결합하면 다음과 같습니다.
[DllImport("kernel32.dll", SetLastError = true, SetLastError CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo);
private bool Is64Bit()
{
if (IntPtr.Size == 8 || (IntPtr.Size == 4 && Is32BitProcessOn64BitProcessor()))
return true;
else
return false;
}
private bool Is32BitProcessOn64BitProcessor()
{
bool retVal;
IsWow64Process(Process.GetCurrentProcess().Handle, out retVal);
return retVal;
}
참고 사이트
반응형