The
GetVersionEx function retrieves the major and minor version numbers and other information about the currently running version of the operating system. The
VerifyVersionInfo function enables you to determine whether the current system satisfies a specified set of operating system version conditions. For more information, see the following topics:
The following table summarizes the most recent operating system version numbers.
| Operating system | Version number |
| Windows 7 | 6.1 |
| Windows Server 2008 R2 | 6.1 |
| Windows Server 2008 | 6.0 |
| Windows Vista | 6.0 |
| Windows Server 2003 R2 | 5.2 |
| Windows Server 2003 | 5.2 |
| Windows XP | 5.1 |
| Windows 2000 | 5.0 |
Identifying the current operating system is usually not the best way to determine whether a particular operating system feature is present. This is because the operating system may have had new features added in a redistributable DLL. Rather than using
GetVersionEx to determine the operating system platform or version number, test for the presence of the feature itself.
To determine the best way to test for a feature, refer to the documentation for the feature of interest. The following list discusses some common techniques for feature detection:
- You can test for the presence of the functions associated with a feature. To test for the presence of a function in a system DLL, call the
LoadLibrary function to load the DLL. Then call the
GetProcAddress function to determine whether the function of interest is present in the DLL. Use the pointer returned by GetProcAddress to call the function. Note that even if the function is present, it may be a stub that just returns an error code such as ERROR_CALL_NOT_IMPLEMENTED.
- You can determine the presence of some features by using the
GetSystemMetrics function. For example, you can detect multiple display monitors by calling
GetSystemMetrics(SM_CMONITORS).
- There are several versions of the redistributable DLLs that implement shell and common control features. For information about determining which versions are present on the system your application is running on, see the topic
Shell and Common Controls Versions.
If you must require a particular operating system, be sure to use it as a minimum supported version, rather than design the test for the one operating system. This way, your detection code will continue to work on future versions of Windows.
Note that a 32-bit application can detect whether it is running under WOW64 by calling the
IsWow64Process function. It can obtain additional processor information by calling the
GetNativeSystemInfo function.
Send comments about this topic to Microsoft
Build date: 5/14/2009