Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich die Windows 10-Version aus plattformübergreifender Sicht genau erkennen?

Barbara Streisand
Freigeben: 2024-11-05 04:16:01
Original
613 Leute haben es durchsucht

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

Plattformübergreifende Erkennung der Windows 10-Version

Die Aufgabe, Windows 10 aus einer plattformübergreifenden Perspektive genau zu erkennen, kann aufgrund von schwierig sein Inkonsistenzen in der Versionsberichterstattung über verschiedene Windows-Versionen hinweg. Während die Funktion IsWindows10OrGreater() leicht verfügbar ist, stellt ihr Fehlen in früheren Windows-Versionen eine Hürde dar.

Abrufen der wahren Betriebssystemversion

Eine effektive Lösung liegt in der Umgehung von Kompatibilitäts-Shims und direkter Zugriff auf die zugrunde liegenden Betriebssystemversionsinformationen. Dies kann mit der RtlGetVersion-Funktion aus dem Windows Driver Development Kit (DDK) erreicht werden.

Dynamische Laufzeitverknüpfung

Um eine Abhängigkeit vom DDK zu vermeiden, kann eine dynamische Laufzeitverknüpfung erfolgen wie unten gezeigt eingesetzt werden:

<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>
Nach dem Login kopieren

Durch Aufrufen dieser Funktion kann die wahre Betriebssystemversion abgerufen werden, unabhängig von Kompatibilitäts-Shims oder Manifest-Einstellungen.

Alternativer Ansatz

Erwägen Sie, das Problem aus der Perspektive der Identifizierung unterstützter Funktionen anzugehen, anstatt sich ausschließlich auf Betriebssystemversionen zu verlassen. Dieser Ansatz bietet eine größere Flexibilität und Anpassungsfähigkeit an zukünftige Updates und Erweiterungen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Windows 10-Version aus plattformübergreifender Sicht genau erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage