첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ 64비트 프로세스 여부와 64비트 운영 체제 여부를 구하는 방법을 보여준다.

TestProject.zip
0.00MB

▶ Program.cs

using System.Diagnostics;
using System.Runtime.InteropServices;

namespace TestProject;

/// <summary>
/// 프로그램
/// </summary>
class Program
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Import
    ////////////////////////////////////////////////////////////////////////////////////////// Static
    //////////////////////////////////////////////////////////////////////////////// Private

    #region WOW 64비트 프로세스 여부 구하기 - IsWow64Process(processHandle, isWOW64Process)

    /// <summary>
    /// WOW 64비트 프로세스 여부 구하기
    /// </summary>
    /// <param name="processHandle">프로세스 핸들</param>
    /// <param name="isWOW64Process">WOW 64비트 프로세스 여부</param>
    /// <returns>처리 결과</returns>
    [DllImport("kernel32", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool IsWow64Process([In] IntPtr processHandle, [Out] out bool isWOW64Process);

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Static
    //////////////////////////////////////////////////////////////////////////////// Private

    #region 64비트 버전 여부 구하기 - Is64BitVersion()

    /// <summary>
    /// 64비트 버전 여부 구하기
    /// </summary>
    /// <returns>64비트 버전 여부</returns>
    private static bool Is64BitVersion()
    {
        if((Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor >= 1) || Environment.OSVersion.Version.Major >= 6)
        {
            using(Process process = Process.GetCurrentProcess())
            {
                bool result;

                if(!IsWow64Process(process.Handle, out result))
                {
                    return false;
                }

                return result;
            }
        }
        else
        {
            return false;
        }
    }

    #endregion
    #region 프로그램 시작하기 - Main()

    /// <summary>
    /// 프로그램 시작하기
    /// </summary>
    private static void Main()
    {
        bool is64BitProcess = (IntPtr.Size == 8);
        bool is64BitOperatingSystem = is64BitProcess || Is64BitVersion();

        Console.WriteLine($"64비트 프로세스 여부  : {is64BitProcess        }");
        Console.WriteLine($"64비트 운영 체제 여부 : {is64BitOperatingSystem}");
    }

    #endregion
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요