Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Verifying the System Version

[ Use of the VerifyVersionInfo function to verify the currently running operating system is not recommended. Instead, use the Version Helper APIs]

This contains examples that use the VerifyVersionInfo function to determine whether the application is running on a specific operating system.

The main steps in each example are as follows:

  1. Set the appropriate values in the OSVERSIONINFOEX structure.
  2. Set the appropriate condition mask using the VER_SET_CONDITION macro.
  3. Call VerifyVersionInfo to perform the test.

Example 1

The following example determines whether the application is running on Windows XP with Service Pack 2 (SP2) or a later version of Windows, such as Windows Server 2003 or Windows Vista.

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

BOOL Is_WinXP_SP2_or_Later () 
{
 OSVERSIONINFOEX osvi;
 DWORDLONG dwlConditionMask = 0;
 int op=VER_GREATER_EQUAL;

 // Initialize the OSVERSIONINFOEX structure.

 ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
 osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
 osvi.dwMajorVersion = 5;
 osvi.dwMinorVersion = 1;
 osvi.wServicePackMajor = 2;
 osvi.wServicePackMinor = 0;

 // Initialize the condition mask.

 VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, op );
 VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, op );
 VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMAJOR, op );
 VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMINOR, op );

 // Perform the test.

 return VerifyVersionInfo(
 &osvi, 
 VER_MAJORVERSION | VER_MINORVERSION | 
 VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
 dwlConditionMask);
}

void main()
{
 if(Is_WinXP_SP2_or_Later())
 printf("The system meets the requirements.\n");
 else printf("The system does not meet the requirements.\n");
}

Example 2

The following code verifies that the application is running on Windows 2000 Server or a later server, such as Windows Server 2003 or Windows Server 2008.

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

BOOL Is_Win_Server() 
{
 OSVERSIONINFOEX osvi;
 DWORDLONG dwlConditionMask = 0;
 int op=VER_GREATER_EQUAL;

 // Initialize the OSVERSIONINFOEX structure.

 ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
 osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
 osvi.dwMajorVersion = 5;
 osvi.dwMinorVersion = 0;
 osvi.wServicePackMajor = 0;
 osvi.wServicePackMinor = 0;
 osvi.wProductType = VER_NT_SERVER;

 // Initialize the condition mask.

 VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, op );
 VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, op );
 VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMAJOR, op );
 VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMINOR, op );
 VER_SET_CONDITION( dwlConditionMask, VER_PRODUCT_TYPE, VER_EQUAL );

 // Perform the test.

 return VerifyVersionInfo(
 &osvi, 
 VER_MAJORVERSION | VER_MINORVERSION | 
 VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR |
 VER_PRODUCT_TYPE,
 dwlConditionMask);
}

void main()
{
 if(Is_Win_Server())
 printf("The system meets the requirements.\n");
 else printf("The system does not meet the requirements.\n");
}

Feedback

Was this page helpful?

Additional resources