본문 바로가기

프로그래밍/코드 조각

윈도우 버전 가져오기

win32에서 윈도우 버전을 가져오기 위해서는 일반적으로 GetVersionEx를 사용한다.


그러나 윈도우 버전이 올라갈수록 이 함수가 정상 동작을 하지 않는다. 


이 함수를 정상 동작하게 하기 위해서는 EXE에 추가적인 manifest를 임베딩 시키면 정상적으로 동작을 하게 된다.


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">

    <application>

      <!--The ID below indicates application support for Windows Vista -->

      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>

      <!--The ID below indicates application support for Windows 7 -->

      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>

      <!--The ID below indicates application support for Windows 8 -->

      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>

      <!--The ID below indicates application support for Windows 8.1 -->

      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>

      <!--The ID below indicates application support for Windows 10 -->

      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>

    </application>

  </compatibility>

</assembly>


위 manifest를 별도로 저장후 visual studio 프로젝트 설정에 추가하면 정상 동작한다.