>  기사  >  백엔드 개발  >  플랫폼 전반에서 Windows 10 버전을 안정적으로 감지하는 방법은 무엇입니까?

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

DDD
DDD원래의
2024-11-05 18:32:02140검색

How to Reliably Detect Windows 10 Version Across Platforms?

교차 플랫폼 Windows 10 감지

IsWindows10OrGreater( ). 크로스 플랫폼 호환성이 필요한 경우 이 문제는 더욱 시급해집니다.

범용 솔루션

이러한 장애물을 극복하려면 RtlGetVersion 기능을 사용하는 것이 좋습니다. 이 기능은 호환성 심을 우회하고 실제 OS 버전에 대한 액세스 권한을 부여합니다. DDK에서 사용할 수 있지만 다음 코드 조각을 사용하여 런타임 동적 연결을 통해 호출할 수도 있습니다.

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(&rovi) ) {
                return rovi;
            }
        }
    }
    RTL_OSVERSIONINFOW rovi = { 0 };
    return rovi;
}

이 조각은 매니페스트가 없는 경우에도 Windows 10의 실제 OS 버전을 반환합니다.

대체 접근 방식

대체 솔루션은 OS 버전보다는 기능 활용에 중점을 둡니다. 이를 통해 사용 가능한 기능에 따라 다양한 구현이 제공되는 보다 유연한 접근 방식이 가능해졌습니다.

위 내용은 플랫폼 전반에서 Windows 10 버전을 안정적으로 감지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.