> 백엔드 개발 > C++ > 본문

플랫폼 간 관점에서 Windows 10 버전을 정확하게 감지하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-11-05 04:16:01
원래의
616명이 탐색했습니다.

How Can I Accurately Detect Windows 10 Version From a Cross-Platform Perspective?

Windows 10 버전의 크로스 플랫폼 감지

크로스 플랫폼 관점에서 Windows 10을 정확하게 감지하는 작업은 다음과 같은 이유로 어려울 수 있습니다. 다양한 Windows 버전에 걸쳐 버전 보고에 불일치가 있습니다. IsWindows10OrGreater() 함수는 쉽게 사용할 수 있지만 이전 Windows 버전에는 이 함수가 없으면 장애물이 됩니다.

True OS 버전 검색

효과적인 솔루션은 호환성 심을 우회하는 데 있습니다. 기본 OS 버전 정보에 직접 액세스합니다. 이는 Windows DDK(드라이버 개발 키트)의 RtlGetVersion 기능을 사용하여 달성할 수 있습니다.

런타임 동적 연결

DDK에 대한 종속성을 피하기 위해 런타임 동적 연결은 다음을 수행할 수 있습니다. 아래 설명된 대로 사용됩니다.

<code class="C++">typedef LONG NTSTATUS, *PNTSTATUS;
#define STATUS_SUCCESS (0x00000000)

typedef NTSTATUS (WINAPI* RtlGetVersionPtr)(PRTL_OSVERSIONINFOW);

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(&amp;rovi) ) {
                return rovi;
            }
        }
    }
    RTL_OSVERSIONINFOW rovi = { 0 };
    return rovi;
}</code>
로그인 후 복사

이 함수를 호출하면 호환성 shim 또는 매니페스트 설정에 관계없이 실제 OS 버전을 검색할 수 있습니다.

대체 접근 방식

OS 버전에만 의존하기보다는 지원되는 기능을 파악하는 관점에서 문제에 접근하는 것을 고려해 보세요. 이 접근 방식은 향후 업데이트 및 개선 사항에 대한 더 큰 유연성과 적응성을 제공합니다.

위 내용은 플랫폼 간 관점에서 Windows 10 버전을 정확하게 감지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿