Condividi tramite


Funzione GetVersionExA (sysinfoapi.h)

GetVersionExA potrebbe essere modificato o non disponibile per le versioni successive a Windows 8.1. Usare invece le funzioni helper della versione . Per le app di Windows 10, vedi Targeting your applications for Windows.

Con il rilascio di Windows 8.1, il comportamento dell'API getVersionEx è cambiato nel valore restituito per la versione del sistema operativo. Il valore restituito dalla funzione GetVersionEx dipende ora dalla modalità di manifesto dell'applicazione.

Le applicazioni non manifestate per Windows 8.1 o Windows 10 restituiranno il valore della versione del sistema operativo Windows 8 (6.2). Quando un'applicazione viene manifestata per una determinata versione del sistema operativo, GetVersionEx restituirà sempre la versione per cui l'applicazione viene manifestata nelle versioni future. Per manifestare le applicazioni per Windows 8.1 o Windows 10, fare riferimento a Destinazione dell'applicazione per Windows.

Sintassi

NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExA(
  [in, out] LPOSVERSIONINFOA lpVersionInformation
);

Parametri

[in, out] lpVersionInformation

Struttura OSVERSIONINFOA o OSVERSIONINFOEXA che riceve le informazioni sul sistema operativo.

Prima di chiamare la funzione GetVersionEx , impostare il membro dwOSVersionInfoSize della struttura in base alle esigenze per indicare quale struttura di dati viene passata a questa funzione.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError. La funzione ha esito negativo se si specifica un valore non valido per il membro dwOSVersionInfoSizedella struttura OSVERSIONINFOA o OSVERSIONINFOEXA.

Osservazioni

L'identificazione del sistema operativo corrente non è in genere il modo migliore per determinare se è presente una particolare funzionalità del sistema operativo. Ciò è dovuto al fatto che il sistema operativo potrebbe avere aggiunto nuove funzionalità in una DLL ridistribuibile. Invece di usare GetVersionEx per determinare la piattaforma o il numero di versione del sistema operativo, verificare la presenza della funzionalità stessa. Per altre informazioni, vedere versione del sistema operativo.

La funzione GetSystemMetrics fornisce informazioni aggiuntive sul sistema operativo corrente.

Prodotto Impostazione
Windows XP Media Center Edition SM_MEDIACENTER
Windows XP Starter Edition SM_STARTER
Windows XP Tablet PC Edition SM_TABLETPC
Windows Server 2003 R2 SM_SERVERR2
 

Per verificare la presenza di sistemi operativi specifici o funzionalità del sistema operativo, usare la funzione IsOS . La funzione GetProductInfo recupera il tipo di prodotto.

Per recuperare informazioni per il sistema operativo in un computer remoto, utilizzare la funzione netWkstaGetInfo , la classe WMI Win32_OperatingSystem o la proprietà OperatingSystem dell'interfaccia IADsComputer .

Per confrontare la versione corrente del sistema con una versione richiesta, usare la funzione VerifyVersionInfo anziché usare GetVersionEx per eseguire il confronto manualmente.

Se la modalità di compatibilità è attiva, la funzione GetVersionEx segnala il sistema operativo come si identifica, che potrebbe non essere il sistema operativo installato. Ad esempio, se la modalità di compatibilità è attiva, GetVersionEx segnala il sistema operativo selezionato per la compatibilità delle applicazioni .

Esempi

Quando si usa la funzione GetVersionEx per determinare se l'applicazione è in esecuzione in una determinata versione del sistema operativo, verificare la presenza di numeri di versione maggiori o uguali ai numeri di versione desiderati. In questo modo si garantisce che il test abbia esito positivo per le versioni successive del sistema operativo. Ad esempio, se l'applicazione richiede Windows XP o versione successiva, usare il test seguente.

#include <windows.h>
#include <stdio.h>

void main()
{
    OSVERSIONINFO osvi;
    BOOL bIsWindowsXPorLater;

    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

    GetVersionEx(&osvi);

    bIsWindowsXPorLater = 
       ( (osvi.dwMajorVersion > 5) ||
       ( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) ));

    if(bIsWindowsXPorLater)
        printf("The system meets the requirements.\n");
    else printf("The system does not meet the requirements.\n");
}

Per un esempio che identifica il sistema operativo corrente, vedere Getting the System Version.

Nota

L'intestazione sysinfoapi.h definisce GetVersionEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [app desktop | App UWP]
server minimo supportato Windows 2000 Server [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione sysinfoapi.h (include Windows.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

GetVersion

OSVERSIONINFOA

OSVERSIONINFOEXA

versione del sistema operativo

funzioni di informazioni di sistema

VerifyVersionInfo

funzioni helper della versione