반응형
개발을 하다보면 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;
}
참고 사이트
반응형
'Programming > Windows.C#' 카테고리의 다른 글
String 문자열을 Enum으로 바꾸는 방법 (0) | 2012.11.16 |
---|---|
ListBox 아이템 선택 및 해제 방법 (0) | 2012.11.16 |
C# Coding Standards and Best Programming Practices (0) | 2010.12.21 |
/unsafe 모드 사용 (0) | 2010.03.23 |
GDI+에서 일반 오류가 발생했습니다. (0) | 2010.03.22 |