[C++] C++ 코드로 Windows버전 알아오는 방법

Programming/C++_C#|2020. 7. 19. 10:30
반응형

안녕하세요.

오늘은 비쥬얼스튜디오에서 C++로 해당 컴퓨터 윈도우버전이 무엇인지 알아오는

코드를 포스팅하겠습니다.

 

1. 해더에 아래와 같이 선언합니다.

 

2. NetWkstaGetInfo함수를 통해 윈도우버전을 가져오는 코드부분입니다.

 

코드
#include <iostream>
#include <windows.h>
#include <Lm.h>
#pragma comment(lib, "netapi32.lib")
#pragma warning(disable:4996)
using namespace std;

const char* GetOSName(DWORD& dwMajor, DWORD& dwMino)
{
     if ((dwMajor == 4) && (dwMino == 0)) return "WIN_95"; else
     if ((dwMajor == 4) && (dwMino == 10)) return "WIN_98"; 
     else if ((dwMajor == 4) && (dwMino == 90)) return "WIN_ME";
     else if ((dwMajor == 5) && (dwMino == 0)) return "WIN_2000";
     else if ((dwMajor == 5) && (dwMino == 1)) return "WIN_XP";
     else if ((dwMajor == 5) && (dwMino == 2)) return "WIN_.NET";
     else if ((dwMajor == 6) && (dwMino == 0)) return "WIN_VISTA";
     else if ((dwMajor == 6) && (dwMino == 1)) return "WIN_7";
     else if ((dwMajor == 6) && (dwMino == 2)) return "WIN_8";
     else if ((dwMajor == 6) && (dwMino == 3)) return "WIN_8.1";
     else if ((dwMajor == 10) && (dwMino == 0)) return "WIN_10";
     return "WIN_ETC";
}

int main()
{
     static DWORD dwMajorCache = 0, dwMinorCache = 0;
     LPWKSTA_INFO_100 pBuf = NULL;
     if (NERR_Success != NetWkstaGetInfo(NULL, 100, (LPBYTE*)&pBuf))
          return FALSE;
     dwMajorCache = pBuf->wki100_ver_major;
     dwMinorCache = pBuf->wki100_ver_minor; NetApiBufferFree(pBuf);
     cout << GetOSName(dwMajorCache, dwMinorCache) << endl;
}

 

 

 

반응형

댓글()