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