윈 도 우 C++ 고수님. 도움 좀 부탁드립니다
2021.09.22 12:21
윈도우 10으로 넘어오면서 프로그래밍 막히는 부분이 점점 많아지네요 -_-;;;;
레지스트리 이용하자니 프리뷰 빌드에선 안되는 경우도 있고
윈10 api 이용하자니 코드가 지저분하게 길어지는 문제가 있더군요.
윈도우 10 보다 아래 버전인지 아닌지 C++로 쉽게 알아내는 방법 없을까요?
C++ 전문가이신 분 도움 좀 부탁드립니다.
댓글 [6]
-
내꼬 2021.09.22 13:06 -
harman777 2021.09.22 14:38
제가 C++로 작업해야 해서요 -_-;;;;
감사합니다.
-
kernel 2021.09.22 14:11
Windows OS 내부구조를 알고있으면...
아래와 같이 C++ 람다 이용해서 간단하게 알아낼 수 있죠.
if (auto _{[](){return (*(int*)(0x7FFE026C)) - 012 < 0;}};_())
printf( "윈도우즈10 보다 아래 버전 임\n" );
else
printf( "윈도우즈10 또는 그 이상 버전 임\n" );
-
kernel 2021.09.22 14:15
참고로 위 코드는 32비트와 64비트에서 모두 동작함.
-
kernel 2021.09.22 14:17
VC++ 컴파일러 옵션에서 랭귀지 스펙을 C++17 이상으로 설정해서 컴파일하면 됌.
-
harman777 2021.09.22 14:42
감사합니다. kernel님.
정상 동작하는걸 확인했습니다.
원리는 모르겠지만 잘되네요. 역시 고수님. ^^;;;;;;
정말 감사합니다.
프리뷰에서 안되는 경우는 레지가 삭제 되었거나 다른 경로로 바뀌었을 경우
api 이용시 코드가 많아지는 것 또한 맞는 말이구요.
C++로 작성하면 더 좋겠지만 단순 한것 하나 만들려고 해도 많은 불편함이 있어 저는 적응을 못해 c#으로 바꾸었습니다.
OS 버전 체크는 다양하지만 제 경우는 빌드넘버로 버전 체크 하였습니다.
Windows 10 - 릴리스 정보 | Microsoft Docs
Windows Version Numbers - Version and build numbers of Microsoft Windows (gaijin.at)