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(&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!