"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 플랫폼과 버전 전반에서 Windows 10 버전을 안정적으로 감지하는 방법은 무엇입니까?

플랫폼과 버전 전반에서 Windows 10 버전을 안정적으로 감지하는 방법은 무엇입니까?

2024년 11월 21일에 게시됨
검색:410

How to Reliably Detect Windows 10 Version Across Platforms and Versions?

Windows 10 버전 교차 플랫폼 및 다중 버전 감지

컨텍스트

부정확성으로 인해 플랫폼 간 호환성을 위해 Windows 10을 감지하는 것이 어려울 수 있습니다. IsWindows10OrGreater()와 같은 사용 가능한 함수에서. 이 문서에서는 이 문제를 해결하기 위한 교차 플랫폼 및 다중 버전 접근 방식을 살펴봅니다.

해결책

실제 OS 버전을 검색하는 가장 안정적인 방법은 RtlGetVersion을 호출하는 것입니다. 이 함수는 GetVersionEx 및 verifyVersionInfo에서 사용되는 호환성 심을 방지합니다. 다음 코드 조각에 표시된 대로 동적 연결을 통해 액세스할 수 있습니다.

RTL_OSVERSIONINFOW GetRealOSVersion() {
    HMODULE hMod = ::GetModuleHandleW(L"ntdll.dll");
    if (hMod) {
        RtlGetVersionPtr fxPtr = (RtlGetVersionPtr)::GetProcAddress(hMod, "RtlGetVersion");
        if (fxPtr != nullptr) {
            RTL_OSVERSIONINFOW rovi = { 0 };
            rovi.dwOSVersionInfoSize = sizeof(rovi);
            if ( STATUS_SUCCESS == fxPtr(&rovi) ) {
                return rovi;
            }
        }
    }
    RTL_OSVERSIONINFOW rovi = { 0 };
    return rovi;
}

이 메서드는 매니페스트가 없더라도 Windows 10에서 예상된 결과를 반환합니다.

대체 접근 방식

OS 버전에 의존하는 대신 다음을 수행하는 것이 좋습니다. 기능 기반 솔루션을 구현합니다. 이는 보다 유연하고 미래 지향적인 접근 방식을 제공합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3