Detectar Windows 10 para compatibilidad multiplataforma puede ser un desafío debido a imprecisiones en funciones disponibles como IsWindows10OrGreater(). Este artículo explora un enfoque multiplataforma y multiversión para resolver este problema.
El método más confiable para recuperar la versión real del sistema operativo es llamar a RtlGetVersion. Esta función evita las correcciones de compatibilidad utilizadas por GetVersionEx y VerifyVersionInfo. Se puede acceder a través de enlaces dinámicos como se muestra en el siguiente fragmento de código:
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;
}
Este método devuelve los resultados esperados en Windows 10, incluso en ausencia de un manifiesto.
En lugar de depender de las versiones del sistema operativo, se recomienda implementar soluciones basadas en características. Esto proporciona un enfoque más flexible y preparado para el futuro.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3