Sometimes you need to know a very simple thing, like "Is it Windows NT?".
Some of the solutions to this problem are excellent and very thorough,
but seem to be overkill. But when you try to find out what it takes
to determine what OS your program is running on, then you find there is
no one place to go to.
What Microsoft Says
The facts about what data are returned by
GetVersionEx are scattered
around Microsoft site. Here are a few articles I have tracked down:
As you will see from reading them, these articles are not complete.
Table of Windows Version Numbers
I have pulled together following table from many different sources,
including Usenet news groups, searching web sites, and reading code here
and on other developer sites. It is only a beginning, and if you have
knowledge to share please email me
and I will acknowledge your contribution.
|95 SP1||1||4||0||> 950 && <= 1080|
|95 OSR2||1||4||< 10||> 1080|
|98 SP1||1||4||10||>1998 && < 2183|
|98 SE||1||4||10||>= 2183|
|CE 1.0||3||1||0|| |
|CE 2.0||3||2||0|| |
|CE 2.1||3||2||1|| |
|CE 3.0||3||3||0|| |
How to use this information
I have developed a simple function which uses this table to return
a single value that can be used in applications. The function is
GetWinVer and it is in FontFile demo
Depending on what readers want to see, there are several areas
for new entries:
- Windows versions prior to Win95
- CE versions
- Service pack information for NT