Maison >développement back-end >C++ >Comment puis-je détecter la version spécifique de Windows 10 sur plusieurs plates-formes ?

Comment puis-je détecter la version spécifique de Windows 10 sur plusieurs plates-formes ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 10:17:021007parcourir

How Can I Detect the Specific Windows 10 Version Across Multiple Platforms?

Détection de la version de Windows 10 sur toutes les plates-formes

Objectif :

Déterminer la version spécifique de Windows 10 utilisée dans un croisement -base de code de plate-forme qui cible Windows 7 et versions ultérieures.

Défi :

Windows fournit la fonction IsWindows10OrGreater(), mais elle n'est pas disponible dans les anciennes versions de Windows et peut ne pas l'être. signaler avec précision la version majeure du système d'exploitation.

Solution :

Utiliser la fonction RtlGetVersion dans le cadre d'une approche compatible entre versions :

<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");
    ... (Module handle and function lookup code) ...
        RTL_OSVERSIONINFOW rovi = { 0 };
        rovi.dwOSVersionInfoSize = sizeof(rovi);
        if ( STATUS_SUCCESS == fxPtr(&amp;rovi) ) {
            return rovi;
        }
    ... (Error handling code) ...
}</code>

Cette fonction récupère avec précision la véritable version du système d'exploitation sur Windows 10, même en l'absence de manifeste.

Approche alternative :

Pour une compatibilité améliorée et une pérennité, envisagez de spécifier la fonctionnalité exigences plutôt que des versions spécifiques du système d’exploitation. Cela garantit que votre code se comporte de manière cohérente dans différentes versions de Windows avec des fonctionnalités variables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn