Windows 운영 체제의 버전 정보를 확인하는 방법에는 여러 가지가 있습니다. Windows 8부터 GetVersionEx Windows API 함수는 기본적으로 OS 버전 번호를 6.2(Windows 8)로 반환합니다. 이는 호환성 문제를 최소화하기 위함이며, OS 버전을 정확히 확인하는 데 사용할 수 없습니다. 이 글에서는 Windows 버전을 확인하는 여러 가지 방법을 소개합니다.
Windows 운영체제 버전 리스트
먼저 이 전글에 정리했던 Windows 운영체제의 제품 이름, 내부 버전 번호 및 출시 날짜에 대한 테이블입니다.
Windows 이름 | 코드명 | 버전명 | 빌드번호 | 배포일 | 지원종료일 |
Windows 1.01 | Interface Manager | 1.01 | 1985-11-20 | 2001-12-31 | |
Windows 2.01 | 2.01 | 1987-12-09 | 2001-12-31 | ||
Windows 2.1 | 2.1 | 1988-05-27 | 2001-12-31 | ||
Windows 2.11 | 2.11 | 1989-03-13 | 2001-12-31 | ||
Windows 3.0 | 3 | 1990-05-22 | 2001-12-31 | ||
Windows 3.1 | Sparta | 3.1 | 102 | 1992-10-31 | 2001-12-31 |
Windows NT 3.5 | Daytona | 3.5 | 807 | 1994-09-21 | 2000-12-31 |
Windows 95 | Chicago | 4.0 | 950 | 1995-08-24 | 2000-12-31 |
Windows NT 4.0 | Shell Update Release | 4.0 | 1381 | 1996-08-24 | 2004-06-30 |
Windows 98 | Memphis | 4.1 | 1998 | 1998-06-25 | 2006-07-11 |
Windows 98 SE | 4.1 | 2222 | 1999-06-10 | 2006-07-11 | |
Windows 2000 | Windows NT 5.0 | 5.0 | 2195 | 2000-02-17 | 2010-07-13 |
Windows Me | Millennium | 4.9 | 3000 | 2000-09-14 | 2006-07-11 |
Windows XP | Whistler | 5.1 | 2600 | 2001-10-25 | 2014-04-08 |
Windows XP | Symphony | 5.1 | 2700 | 2004-10-12 | 2014-04-08 |
Windows XP | Emerald | 5.1 | 2710 | 2005-10-14 | 2014-04-08 |
Windows XP | Anvil | 5.2 | 3790 | 2005-04-25 | 2014-04-08 |
Windows Vista | Longhorn | 6.0 | 6002 | 2007-01-30 | 2017-04-11 |
Windows 7 | Windows 7 | 6.1 | 7601 | 2009-10-22 | 2020-01-14 |
Windows 8 | Windows 8 | 6.2 | 9200 | 2012-10-26 | 2016-01-12 |
Windows 8.1 | Blue | 6.3 | 9600 | 2013-10-17 | 2023-01-10 |
Windows 10 1507 | TH (Threshold) | 10.0 | 10240 | 2015-07-29 | 2025-10-14 |
Windows 10 1511 | TH2 (Threshold 2) | 10.0 | 10586 | 2015-11-10 | 2025-10-14 |
Windows 10 1607 | RS1 (Redstone 1) | 10.0 | 14393 | 2016-08-02 | 2025-10-14 |
Windows 10 1703 | RS2 (Redstone 2) | 10.0 | 15063 | 2017-04-05 | 2025-10-14 |
Windows 10 1709 | RS3 (Redstone 3) | 10.0 | 16299 | 2017-10-17 | 2025-10-14 |
Windows 10 1803 | RS4 (Redstone 4) | 10.0 | 17134 | 2018-04-30 | 2025-10-14 |
Windows 10 1809 | RS5 (Redstone 5) | 10.0 | 17763 | 2018-11-13 | 2025-10-14 |
Windows 10 1903 | 1903 | 10.0 | 18362 | 2019-05-21 | 2025-10-14 |
Windows 10 1909 | 1909 | 10.0 | 18363 | 2019-11-12 | 2025-10-14 |
Windows 10 2004 | 2004 | 10.0 | 19041 | 2020-05-27 | 2025-10-14 |
Windows 10 20H2 | 20H2 | 10.0 | 19042 | 2020-10-20 | 2025-10-14 |
Windows 10 21H1 | 21H1 | 10.0 | 19043 | 2021-05-18 | 2025-10-14 |
Windows 10 21H2 | 21H2 | 10.0 | 19044 | 2021-11-16 | 2025-10-14 |
Windows 10 22H2 | 22H2 | 10.0 | 19045 | 2022-10-18 | 2025-10-14 |
Windows 11 21H2 | 21H2 (Sun Valley) | 10.0 | 22000 | 2021-10-05 | 2023-10-10 |
Windows 11 22H2 | 22H2 (Sun Valley 2) | 10.0 | 22621 | 2022-09-20 | 2024-10-08 |
Windows 11 23H2 | 23H2 | 10.0 | 22631 | 2023-10-31 | 2025-11-11 |
Windows 내장 명령어 사용: ver, winver
Windows 버전 정보를 확인하기 위해 명령어를 사용할 수 있습니다.
ver 명령어
명령 프롬프트에 ver
을 입력하면 현재 운영 체제의 버전 정보를 볼 수 있습니다.
C:\Users\user>ver
Microsoft Windows [Version 10.0.19042.789]
winver 명령어
또한 winver
명령을 실행하면 그래픽 인터페이스를 통해 Windows 버전 정보를 확인할 수 있습니다.
VerifyVersionInfo 함수 사용
VerifyVersionInfo
함수를 사용하여 OS의 실제 버전 정보를 검증할 수 있습니다.
#include <windows.h>
#include <iostream>
void CheckWindowsVersion() {
OSVERSIONINFOEX osvi;
DWORDLONG dwlConditionMask = 0;
int op = VER_GREATER_EQUAL;
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 10;
osvi.dwMinorVersion = 0;
VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op);
VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, op);
if (VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, dwlConditionMask)) {
std::cout << "Windows 10 이상 버전입니다." << std::endl;
} else {
std::cout << "Windows 10 미만 버전입니다." << std::endl;
}
}
int main() {
CheckWindowsVersion();
return 0;
}
이 함수는 조건을 설정하여 특정 버전 이상인지 여부를 확인합니다.
ntdll에 있는 RtlGetVersion을 활용하는 방법
아래는 Python의 ctypes 라이브러리를 이용한 구현 예제입니다.
def winver():
'''Major, Minor, BuildNumber 의 튜플을 리턴합니다.'''
class OSVERSIONINFOEXW(ctypes.Structure):
_fields_ = [
('dwOSVersionInfoSize', wintypes.DWORD),
('dwMajorVersion', wintypes.DWORD),
('dwMinorVersion', wintypes.DWORD),
('dwBuildNumber', wintypes.DWORD),
('dwPlatformId', wintypes.DWORD),
('szCSDVersion', wintypes.WCHAR * 128),
('wServicePackMajor', wintypes.WORD),
('wServicePackMinor', wintypes.WORD),
('wSuiteMask', wintypes.WORD),
('wProductType', wintypes.BYTE),
('wReserved', wintypes.BYTE),
]
os_version = OSVERSIONINFOEXW()
os_version.dwOSVersionInfoSize = ctypes.sizeof(OSVERSIONINFOEXW)
if ctypes.windll.Ntdll.RtlGetVersion(ctypes.byref(os_version)) == 0:
return os_version.dwMajorVersion, os_version.dwMinorVersion, os_version.dwBuildNumber
else:
print("OS 버전을 확인할 수 없습니다.")
if __name__ == "__main__":
majorN, minorN, buildN = winver()
print(f"Windows Version: {majorN}.{minorN}.{buildN}\n")
이 방법은 직접 RtlGetVersion 함수를 호출하여 정확한 OS 버전 정보를 얻을 수 있습니다.
VersionHelpers의 여러가지 API 사용
IsWindows8OrGreater
, IsWindows8Point1OrGreater
, IsWindows10OrGreater
, IsWindowsServer
와 같은 최신 버전 도우미 API를 통해 간접적으로 버전 정보를 얻을 수 있습니다.
#include <VersionHelpers.h>
#include <iostream>
void CheckWindowsVersion() {
if (IsWindows10OrGreater()) {
std::cout << "Windows 10 이상 버전입니다." << std::endl;
} else if (IsWindows8Point1OrGreater()) {
std::cout << "Windows 8.1 이상 버전입니다." << std::endl;
} else if (IsWindows8OrGreater()) {
std::cout << "Windows 8 이상 버전입니다." << std::endl;
} else {
std::cout << "Windows 8 미만 버전입니다." << std::endl;
}
}
int main() {
CheckWindowsVersion();
return 0;
}
이 API들은 다양한 Windows 버전을 확인하는 데 유용합니다.
'Windows Internals' 카테고리의 다른 글
Windows Error Codes 5: Device Manager Error Codes (0) | 2024.05.17 |
---|---|
Windows Error Codes 2: NTSTATUS Error Codes (0) | 2024.05.16 |
Windows Error Codes 1: Win32 Error / GetLastError Codes (WinError.h) (0) | 2024.05.15 |
Windows Error Codes 총정리: GetLastError Win32, NTSTATUS, HRESULT, Bug Checks Error Codes (0) | 2024.05.15 |
Windows 운영체제 version 및 버전 별 역사에 대해 (0) | 2024.05.15 |