teams sesion que puedo pida microsoft invitados inicia habilite error entrar deshabilitar conceda agregar administrador acceso 4c7 0xcaa82ee2 c++ windows version

c++ - sesion - pida a su administrador de ti que le conceda acceso a microsoft teams



Compruebe la versiĆ³n de Windows (7)

¿Cómo puedo verificar en C ++ si la versión de Windows instalada en la computadora es Windows Vista y superior (Windows 7)?



En Visual Studio 2013 o superior, también puede usar las nuevas funciones de Version Helper.

Hay métodos para muchas versiones diferentes de Windows. Ejemplo:

#include <VersionHelpers.h> if (!IsWindowsVistaOrGreater()) { MessageBox(NULL, "You need at least Windows Vista", "Version Not Supported", MB_OK); }

Mas informacion here


Esta página de soporte de Microsoft le da detalles para versiones anteriores.

Para determinar el sistema operativo que se ejecuta en un sistema dado, se necesitan los siguientes datos:

95 98 ME NT 4 2000 XP PlatformID 1 1 1 2 2 2 Major version 4 4 4 4 5 5 Minor version 0 10 90 0 0 1

Podría implementar el código y ejecutarlo en una máquina Vista y Windows-7 para verificar los valores devueltos.

Para obtener la información de la versión del sistema operativo realice la siguiente llamada:

System::OperatingSystem *osInfo = System::Environment::OSVersion;


Podría usar la función GetVersion () o GetVersionEx () en el kernel32.dll. Estas dos funciones solo están disponibles en Windows 2000 o posterior.

Para leer más sobre este aspecto en GetVersionEx .


Similar a otras pruebas para verificar la versión de Windows NT:

OSVERSIONINFO vi; memset (&vi, 0, sizeof vi); vi .dwOSVersionInfoSize = sizeof vi; GetVersionEx (&vi); if (vi.dwPlatformId == VER_PLATFORM_WIN32_NT && vi.dwMajorVersion >= 6)


Todas las respuestas en este hilo apuntan a usar GetVersion o GetVersionEx para esta prueba, lo cual es incorrecto . Parece funcionar, pero es arriesgado. La fuente principal de problemas de la aplicación para las actualizaciones del sistema operativo Windows proviene de pruebas mal escritas basadas en los resultados de GetVersion con suposiciones GetVersion o comparaciones GetVersion .

La forma correcta de realizar esta prueba es usar VerifyVersionInfo , no GetVersion o GetVersionEx .

Si está utilizando el conjunto de herramientas del compilador VS 2013 y el SDK de Windows 8.1, puede usar VersionHelpers.h y simplemente llamar a IsWindowsVistaOrGreater .

Si está utilizando el conjunto de herramientas de la plataforma VS 2013 v120_xp para apuntar a Windows XP, en realidad está usando el SDK de Windows 7.1A, por lo que necesita usar VeriyVersionInfo directamente.

De lo contrario, utilice:

bool IsWindowsVistaOrGreater() { OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 }; DWORDLONG const dwlConditionMask = VerSetConditionMask( VerSetConditionMask( VerSetConditionMask( 0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_MINORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); osvi.dwMajorVersion = HIBYTE(_WIN32_WINNT_VISTA); osvi.dwMinorVersion = LOBYTE(_WIN32_WINNT_VISTA); osvi.wServicePackMajor = 0; return VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE; }

Este código funcionará en Windows 2000 o posterior y le dará un resultado sólido. Si realmente necesitara esta prueba para ejecutarse en Windows 98 o Windows ME -y- está usando un conjunto de herramientas del compilador con la edad suficiente para ejecutarse en esa plataforma, haría la misma prueba pero con un enlace explícito en lugar de implícito. ¿Qué hay en un número de versión?

Además, el uso de GetVersion o GetVersionEx obtendrá de forma predeterminada la versión incorrecta en Windows 8.1 y Windows 10. Ver Manifest Madness .

Tenga en cuenta que con Windows 10 VerifyVersionInfo también está sujeto al mismo comportamiento basado en manifiestos (es decir, sin el elemento GUID para Windows 10, VVI actúa como si el número de versión del sistema operativo fuera 6.2 en lugar de 10.0. Dicho esto, la mayoría de las pruebas del mundo real como IsWindowsVistaOrGreater IsWindows7OrGreater , IsWindows7SP1OrGreater , IsWindows8OrGreater funcionarán bien incluso sin el manifiesto, solo si está usando IsWindows8Point1OrGreater o IsWindows10OrGreater o IsWindows10OrGreater que el comportamiento basado en el manifiesto sea importante.

Véase también this hilo de desbordamiento de pila.


Use la función de API GetVersionEx definida en kernel32.dll :

bool IsWindowsVistaOrHigher() { OSVERSIONINFO osvi; ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi); return osvi.dwMajorVersion >= 6; }