DtWinVer
v2.69 A comprehensive OS detection Class
DtWinVer is a C++ class which provides a comprehensive method to determine which
OS the program that calls it is running on. The routine provides the emulated OS as well as
the underlying OS. e.g to a DOS program Windows 95 looks like MS-DOS 7.0. A full
list of the OS’s it can detect are:
- DOS
- Windows 3.0
- Windows 3.1
- Windows 3.11
- Windows for Workgroups
- Win32s (if you can call this an OS <g>)
- Windows CE 1.0
- Windows CE 2.0
- Windows CE 2.1
- Windows CE 2.11
- Windows CE 3.0
- Windows CE 4.0
- Windows CE .NET 4.X
- Windows CE 5
- Windows CE 6
- Windows Embedded Compact 7
- Windows 95 Gold
- Windows 95 Service Pack 1
- Windows 95B aka OEM Service Release 2[.1]
- Windows 95C aka OEM Service Release 2.5
- Windows 98
- Windows 98 Service Pack 1
- Windows 98 Second Edition
- Windows Millennium Edition
- NT 3.1
- NT 3.5
- NT 3.51
- All flavours of NT, 2000 and XP Service packs
- NT 4.0
- NT Workstation, Server, PDC, BDC, Datacenter, Enterprise
- Windows 2000
- Windows 2000 Professional, Server, Domain Controller, Datacenter and Advanced
Server
- Windows Terminal Services and Back Office
- Windows XP Starter Edition, XP Personal & XP Professional
- Windows Server 2003, Windows Server 2003 (Web Edition), Windows Server 2003
Domain Controller, Datacenter, Enterprise Server & 64 bit Editions
- Windows Server 2003 R2, Windows Server 2003 R2 (Web Edition), Windows Server
2003 R2 Domain Controller, Datacenter, Enterprise Server & 64 bit Editions
- Embedded Windows NT / 2000 / XP / Vista / Windows 7.
- XP Media Center Edition
- Windows XP Tablet PC Edition
- Windows Vista (All SKU's including Starter Edition, Home Basic N, Home
Basic, Home Premium, Home Premium N, Business N, Business, Enterprise N, Enterprise,
Ultimate N, Ultimate).
- Windows Server 2008, Windows Server 2008 Web Edition, Windows Server 2008
Datacenter, Enterprise Server, Core Server, Hyper-V & 64 bit Editions
- Windows Essential Business Server Management, Messaging and Security Server
- Windows Storage Enterprise, Express, Standard and Workgroup Server, Windows
Storage Server Essentials
- Windows Cluster Server
- Windows Home Server, Windows Home Server Premium
- Windows "Security Application" mode
- BackOffice, Small Business Server & Small Business Server Premium installed
- Windows 7 (All SKU's including Starter Edition, Home Basic, Home Premium,
Professional, Enterprise, Ultimate, 64 bit, N & E editions).
- Windows Server 2008 R2, Windows Server 2008 R2 Web Edition, Windows Server
2008 R2 Datacenter, Enterprise Server, Core Server & Hyper-V Editions.
- Windows Server 2008 R2 Foundation Server
- Windows Multipoint Server (Home and Premium Editions)
- Windows 8 (All SKU's including Starter Edition, Pro N, Enterprise, Enterprise
N, China Edition, Single Language Edition, Professional With Windows Media Center &
Windows RT (aka Windows on ARM))
- Windows Server 2012, Windows Server 2012 Web Edition, Windows Server 2012
Datacenter, Enterprise Server, Core Server & Hyper-V Editions.
- Windows Thin PC
- Windows Automotive
- Windows 8.1 (Plus all SKU's as per Windows 8).
- Windows Server 2012 R2 (Plus all SKU's as per Windows Server 2012).
- Windows 8.1 Update
- Windows 8.1 with Bing (All SKU's including China Edition, Single Language
Edition, N, Professional With Windows Media Center & Windows RT (aka Windows
on ARM))
- Windows 2012 R2 Update
- Windows 10 (All SKU's including With Bing, Starter Edition, Home, Pro,
N Edition, Enterprise, China Edition, Single Language Edition, Student, Education,
Connected Car, Industry Handheld, IoT Core, IoT Commercial, IoT Edge OS, IoT
Enterprise, IoT Enterprise LTSC, IoT Enterprise Subscription, IoT Enterprise
LTSC Subscription, IoT Enterprise Evaluation, Windows RT, S
Edition & Pro for Workstations).
Also reported is the Windows 10 UBR value. For example if the version of
Windows 10 is Version 1703, OS Build 15063.138, then the "138"
value is the UBR
value.
- Windows 10 Version 1507, Windows 10 Version 1511, Windows 10 Version 1607,
Windows 10 Version 1703, Windows 10 Version 1709, Windows 10 Version 1803, Windows 10
Version 1809, Windows 10 Version 1903, Windows 10 Version 1909, Windows 10
Version 2004, Windows 10 Version 20H2, Windows 10 Version 21H1, Windows 10
Version 21H2, Windows 10 Version 22H2 & Windows 10 "Active Development Branch".
- Windows 11 (All SKU's as per Windows 10)
- Windows 11 Version 21H2, Windows 11 Version 22H2, Windows 11 Version
23H2, Windows 11 Version 24H2 & Windows 11 "Active Development Branch".
- Windows 365
- Windows Server 2016 (Plus all SKU's as per Windows Server 2012 R2 as well
as Windows Nano Server, Cloud Storage Server, Cloud Host Infrastructure Server,
Azure Nano Server, Utility VM & Workstation).
- Windows Server version 1709
- Windows Server version 1803
- Windows Server version 1809
- Windows Server version 1903
- Windows Server version 1909
- Windows Server version 2004
- Windows Server version 20H2
- Windows Holographic aka Windows HoloLens
- Windows 10 Mobile
- Windows 10 Andromeda
- Windows 10 S
- Windows Server 2019 (Plus all SKU's as per Windows Server 2016)
- Windows Server 2019 vNext
- Windows Server 2022 (Plus all SKU's as per Windows Server 2019)
- Windows Server version 23H2
- Windows Server 2022 vNext
- Windows Server 2025 (Plus all SKU's as per Windows Server 2019)
- Windows Server 2025 vNext
Some of the possible scenarios it can report on are:
- You are running an emulated DOS v5.50 On Windows 2000 Server Build
2195 Service Pack 2
- You are running an emulated Windows 3.95 on Windows 95 v4.0 Build 950
- You are running Windows for Workgroups on DOS v6.22
- You are running NT Server v3.51
- You are running an application on Windows NT Terminal Server.
- This NT machine is acting as a stand alone server, primary domain controller
or backup domain controller.
- You are running on an underlying OS of Windows 8.1 Pro build 9431 but the
emulated OS is Windows 8 Pro Build 9200.
- You are running on an underlying OS of Windows 10 Pro build 9841 (This was
the Windows 10 Technical Preview build) but the emulated OS is Windows 8 Pro
Build 9200.
The enclosed zip file contains source for
the detection routine and also includes project files to create a test program for
DOS, Win16, Windows x86, Windows x64, Windows CE, Windows on ARM and Windows on ARM64.
Copyright
- You are allowed to include the source code in any product (commercial, shareware,
freeware or otherwise) when your product is released in binary form.
- You are allowed to modify the source code in any way you want except you
cannot modify the copyright details at the top of each module.
- If you want to distribute source code with your application, then you are
only allowed to distribute versions released by the author. This is to maintain
a single distribution point for the source code.
Updates
v2.69 (7 November 2024)
- Provided a new IsWindowsServer2025ActiveDevelopmentBranch method.
- Provided a new IsWindowsServerVersion24H2 method.
v2.68 (7 April 2024)
- Provided a new IsWindows11Version24H2 method.
v2.67 (27 January 2024)
- Provided a new IsWindowsServerVersion23H2 method.
- Provided a new IsWindowsServer2025 method.
- Provided a new IsWebWindowsServer2025 method.
- Provided a new IsStandardWindowsServer2025 method.
- Provided a new IsEnterpriseWindowsServer2025 method.
- Provided a new IsDatacenterWindowsServer2025 method.
- Provided a new IsDomainControllerWindowsServer2025 method.
v2.66 (4 January 2024)
- Updated copyright details.
- UBR number is now reported by test app on Windows 11 and Windows Server
2022
- Added support for the following product types:
PRODUCT_AZURE_SERVER_AGENTBRIDGE & PRODUCT_AZURE_SERVER_NANOHOST.
v2.65 (11 November 2023)
- Updated logic to handle the product types:
PRODUCT_SERVER_FOR_SB_SOLUTIONS, PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM,
PRODUCT_STANDARD_SERVER_SOLUTIONS, PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE,
PRODUCT_IOTENTERPRISES, PRODUCT_IOTENTERPRISESK, PRODUCT_IOTENTERPRISEK &
PRODUCT_UNLICENSED.
- Provided a new IsUnlicensed method.
- Provided a new IsServerForSBSolutions method.
- Provided a new IsServerSolutions method.
v2.64 (10 November 2023)
- Updated logic to handle the product types: PRODUCT_IOTENTERPRISESK,
PRODUCT_IOTENTERPRISES, PRODUCT_IOTENTERPRISESEVAL & PRODUCT_IOTENTERPRISE
v2.63 (8 November 2023)
- Added support for the following product types: PRODUCT_IOTENTERPRISEK,
PRODUCT_IOTENTERPRISESEVAL & PRODUCT_WNC
v2.62 (28 July 2023)
- Added support for the following product types: PRODUCT_VALIDATION.
v2.61 (13 July 2023)
- Updated copyright details.
- Provided a new IsWindows11Version23H2 method.
v2.60 (1 October 2022)
- Fixed a bug in the demo app when reporting on Windows 11 version 22H2.
v2.59 (25 September 2022)
- Added support for the following product types: PRODUCT_IOTENTERPRISESK.
v2.58 (28 July 2022)
- Provided a new IsWindows10Version22H2 method.
v2.57 (8 June 2022)
- Provided a new IsWindows11Version22H2 method.
v2.56 (24 March 2022)
- Added support for the following product types: PRODUCT_XBOX_KEYSTONE.
v2.55 (20 January 2022)
- Reworked and renamed IsWindowsServervNext to
IsWindowsServer2019ActiveDevelopmentBranch.
- Provided new IsWindowsServer2022ActiveDevelopmentBranch method.
- Reworked IsWindowsServer2022 method.
- Reworked IsWindowsServer2019 method.
- Reworked IsWindows11ActiveDevelopmentBranch method.
- Reworked IsWindows10ActiveDevelopmentBranch method.
- Reworked IsWindows11 method.
v2.54 (13 January 2022)
- Updated copyright details.
- Added support in the test app for detecting
DEVICEFAMILYDEVICEFORM_XBOX_SERIES_S.
v2.53 (10 September 2021)
- Provided a new IsWindowsServerVersion20H2 method.
- Updated the logic in IsWindowsServerVersion2004.
v2.52 (4 September 2021)
- Provided new IsWindows11Version21H2 &
IsWindows11ActiveDevelopmentBranch methods
- Renamed IsWindows10RTM to IsWindows10Version1507
v2.51 (18 July 2021)
- Added support for the following product types: PRODUCT_AZURE_SERVER_CLOUDHOST, PRODUCT_AZURE_SERVER_CLOUDMOS, PRODUCT_CLOUDEDITIONN & PRODUCT_CLOUDEDITION.
v2.50 (17 July 2021)
- Provided a new IsWindows10Version21H2 method.
v2.49 (16 June 2021)
v2.48 (3 March 2021)
- Provided new IsWindowsServer2022, IsWebWindowsServer2022,
IsStandardWindowsServer2022, IsEnterpriseWindowsServer2022,
IsDatacenterWindowsServer2022 & IsDomainControllerWindowsServer2022 methods
v2.47 (18 February 2021)
- Provided a new IsWindows10Version21H1 method.
- Updated copyright details.
v2.46 (11 November 2020)
- Renamed IsWindows10Codename20H2 method to IsWindows10Version20H2.
v2.45 (12 August 2020)
- Added support for the following product types:
PRODUCT_DATACENTER_SERVER_AZURE_EDITION and
PRODUCT_DATACENTER_SERVER_CORE_AZURE_EDITION
v2.44 (26 July 2020)
- Added support for the following product types: PRODUCT_TURBINE_SERVER
v2.43 (16 June 2020)
- Provided a new IsWindows10Codename20H2 method.
v2.42 (17 May 2020)
- Added support for Windows Server vNext (aka the version of Windows
Server after Windows Server version 2004).
v2.41 (11 April 2020)
- Updated copyright details.
- Fixed more Clang-Tidy static code analysis warnings in the code.
- Added support for the following product types:
PRODUCT_AZURESTACKHCI_SERVER_CORE
- Added support for returning the information from the Windows 10
RtlGetDeviceFamilyInfoEnum API. This addition allows DtWinVer to return true
version information even if the process in which the DtWinVer code is
running with OS Version compatibility mode shims applied.
v2.40 (26 December 2019)
v2.39 (28 November 2019)
- Renamed IsWindows10Codename20H1 method to IsWindows10Version2004.
v2.38 (18 October 2019)
- Renamed IsWindowsServerCodename19H2 method to
IsWindowsServerVersion1909.
- Renamed IsLite method to IsWindows10X.
v2.37 (25 September 2019)
- Updated the logic in IsWindowsServerCodename19H2 to be consistent with
IsWindows10Version1909.
- Added a new IsWindowsServerCodename20H1 method.
- Updated the logic in IsWindowsServerVersion1903 to be consistent with
IsWindows10Version1903.
v2.36 (15 September 2019)
- Renamed IsWindows10Codename19H2 method to IsWindows10Version1909
v2.35 (20 August 2019)
- Fixed some further compiler warnings when using VC 2019 Preview v16.3.0
Preview 2.0
v2.34 (11 August 2019)
- Added support for PRODUCT_XBOX_SCARLETTHOSTOS product type.
- Renamed product type value PRODUCT_XBOX_HOSTOS to
PRODUCT_XBOX_DURANGOHOSTOS.
v2.33 (3 July 2019)
v2.32 (21 May 2019)
- Added support for the following product types: PRODUCT_XBOX_SYSTEMOS,
PRODUCT_XBOX_NATIVEOS, PRODUCT_XBOX_GAMEOS, PRODUCT_XBOX_ERAOS &
PRODUCT_XBOX_HOSTOS
20 April 2019
- Fixed a small typo in the test app provided in the download.
v2.31 (6 April 2019)
- Updated the detection logic in IsWindows10Version1903.
- Added a new IsWindows10Version19H2 method.
- Renamed IsWindowsServerCodename19H1 to IsWindowsServerVersion1903
- Added a new IsWindowsServerCodename19H2 method.
v2.30 (5 March 2019)
- Updated the detection logic in IsWindows10Version1803,
IsWindows10Version1809 and IsWindows10Version19H1
- Renamed IsWindows10Codename19H1 method to IsWindows10Version1903.
v2.29 (19 February 2019)
- Updated the detection logic in IsWindowsServerVersion1809.
- Updated the detection login in IsWindowsServerCodename19H1.
v2.28 (15 February 2019)
- Fixed a number of compiler warnings when using VS 2019 Preview.
- Provided a new IsWindows10Codename20H1 method.
v2.27 (2 January 2019)
- Updated copyright details.
- Added support for PRODUCT_HOLOGRAPHIC_BUSINESS & PRODUCT_IOTENTERPRISES
v2.26 (29 November 2018)
- Added a new IsWindowsServerCodename19H1 method.
- Added support for PRODUCT_LITE.
v2.25 (14 November 2018)
- Added support for PRODUCT_IOTEDGEOS & PRODUCT_IOTENTERPRISE
v2.24 (12 October 2018)
- Added a new IsWindowsServerVersion1809 method
- Reimplemented the IsWindowsServerVersion1709 &
IsWindowsServerVersion1803 methods to explicitly check for these semi-annual
Windows server editions
v2.23 (23 September 2018)
- Renamed PRODUCT_LEAN define to PRODUCT_CLOUDE
- Removed defunct IsLean method
- Fixed a number of compiler warnings when using VS 2017 15.8.5
- Renamed IsWindows10Redstone5 method to IsWindows10Version1809
v2.22 (26 July 2018)
- Added support for PRODUCT_CLOUDEN
- Provided a new IsWindows10Codename19H1 method.
- Changed IsWindows10Redstone5 to IsWindows10CodenameRedstone5.
v2.21 (30 June 2018)
- Fixed a number of C++ core guidelines compiler warnings.
- Added support for PRODUCT_IOTOS.
v2.20 (3 May 2018)
- Test code now reports the UBR number on Windows Server 2019.
- Fixed up detection of Server Core for the following Product types:
PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE, PRODUCT_DATACENTER_A_SERVER_CORE,
PRODUCT_STANDARD_A_SERVER_CORE, PRODUCT_DATACENTER_WS_SERVER_CORE,
PRODUCT_STANDARD_WS_SERVER_CORE, PRODUCT_DATACENTER_EVALUATION_SERVER_CORE,
PRODUCT_STANDARD_EVALUATION_SERVER_CORE & PRODUCT_AZURE_SERVER_CORE.
- The value from GetProductInfo is now returned in the OS_VERSION_INFO
structure.
- Provided a new IsWindowsServerVersion1803 method.
v2.19 (26 April 2018)
v2.18 (22 April 2018)
- Fixed a bug in IsWindowsServer2019 when the computer is a domain
controller. Thanks to Heiko Wetzel for reporting this issue.
v2.17 (31 March 2018)
- Renamed IsWindows10Redstone4 method to IsWindows10Version1803.
v2.16 (28 March 2018)
- Provided new IsWindowsServer2019, IsWebWindowsServer2019,
IsStandardWindowsServer2019, IsEnterpriseWindowsServer2019,
IsDatacenterWindowsServer2019 & IsDomainControllerWindowsServer2019 methods
- Updated IsWindows10OrWindowsServer2016 method to account for Windows
Server 2019
v2.15 (21 February 2018)
- Added support for PRODUCT_ANDROMEDA
- Provided a new IsWindows10Redstone5 method.
v2.14 (4 February 2018)
- Updated copyright details.
- Added support for PRODUCT_ONECOREUPDATEOS.
v2.13 (29 December 2017)
- Download now includes a VC 2017 solution and project files. These files
now support ARM64 in addition to x86, x64 and ARM.
- ARM64 binaries are now included in the download
- Added support for detecting PROCESSOR_ARCHITECTURE_NEUTRAL,
PROCESSOR_ARCHITECTURE_ARM64, PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 &
PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 architectures
v2.12 (11 November 2017)
- Added support for PRODUCT_HUBOS product type
- Added support for detecting VER_SUITE_COMMUNICATIONS,
VER_SUITE_SMALLBUSINESS_RESTRICTED & VER_SUITE_EMBEDDED_RESTRICTED. Note
that there is a new VER_SUITE_MULTIUSERTS define in the latest Windows 10
SDK but it does not fit in the current WORD sized element in OSVERSIONINFOEX
structure so I have not included any code to support this new define.
v2.11 (21 October 2017)
- Renamed IsWindows10Redstone3 method to IsWindows10Version1709.
- Tested the code on Windows 10 version 1709.
- Provided a new IsWindows10Redstone4 method.
- Provided a new IsWindowsServerVersion1709 method.
- Tested the code on Windows Server version 1709.
v2.10 (28 September 2017)
- Added support for PRODUCT_SERVERRDSH product type.
v2.09 (27 September 2017)
- Renamed IsWorkstation method to IsProWorkstations and reworked the
COSVERSION_SUITE3_WORKSTATION enum to be COSVERSION_SUITE3_PRO_WORKSTATIONS.
These changes allow DtWinVer to explicitly support detection of Windows 10
Pro for Workstations.
v2.08 (19 June 2017)
- Renamed IsWindowsCloud method to IsSEdition.
- Renamed IsSEdition method to IsLTSB.
v2.07 (18 April 2017)
- Removed unused COSVersion::GetNTCurrentVersionFromRegistry and
COSVersion::GetNTCSDVersionFromRegistry methods from codebase.
- Updated the code to support the Windows 10 UBR "Update Build Revision"
value. For example the latest version of Windows 10 at the time of this
release was Version 1703, OS Build 15063.138. The 138 in the value is the
UBR.
v2.06 (17 April 2017)
- Provided a new IsWindows10Redstone3 method.
v2.05 (1 April 2017)
- Renamed IsWindows10Version1704 method to IsWindows10Version1703.
- Tested the code on Windows 10 version 1703.
- Verified the code compiles cleanly on VC 2017.
v2.04 (12 February 2017)
- Added support for the following product types: PRODUCT_ENTERPRISEG, PRODUCT_ENTERPRISEGN,
PRODUCT_CLOUD & PRODUCT_CLOUDN.
- Renamed IsWindows10Version1703 method to IsWindows10Version1704.
v2.03 (3 January 2017)
- Updated copyright details.
- Renamed IsWindows10Redstone2 method to IsWindows10Version1703.
v2.02 (13 October 2016)
- Updated the code to report correct values on Windows Server 2016 RTM. It
seems that on Windows Server 2016 Standard RTM that the VER_SUITE_ENTERPRISE
flag is set in OSVERSIONINFOEX::wSuiteMask. I'm not sure if this is a genuine
bug in Windows Server 2016 but I have modified the code to handle this by removing
the COSVERSION_SUITE_ENTERPRISE flag if the code successfully calls GetProductInfo
which gives the correct result after calling GetVersionEx.
v2.01 (17 August 2016)
- Renamed IsWindows10AnniversaryUpdate method to IsWindows10Version1607
- Provided new IsWindows10Redstone2, IsHolographic, IsSubscription, IsUtilityVM,
IsWorkstation, IsAzure & IsIoTCommercial methods.
- Added support for the following product types: PRODUCT_HOLOGRAPHIC, PRODUCT_PRO_SINGLE_LANGUAGE,
PRODUCT_PRO_CHINA, PRODUCT_ENTERPRISE_SUBSCRIPTION, PRODUCT_ENTERPRISE_SUBSCRIPTION_N,
PRODUCT_DATACENTER_NANO_SERVER, PRODUCT_STANDARD_NANO_SERVER, PRODUCT_DATACENTER_A_SERVER_CORE,
PRODUCT_STANDARD_A_SERVER_CORE, PRODUCT_DATACENTER_WS_SERVER_CORE, PRODUCT_STANDARD_WS_SERVER_CORE,
PRODUCT_UTILITY_VM, PRODUCT_DATACENTER_EVALUATION_SERVER_CORE, PRODUCT_STANDARD_EVALUATION_SERVER_CORE,
PRODUCT_PRO_WORKSTATION, PRODUCT_PRO_WORKSTATION_N, PRODUCT_PRO_FOR_EDUCATION,
PRODUCT_PRO_FOR_EDUCATION_N, PRODUCT_AZURE_SERVER_CORE, PRODUCT_AZURE_NANO_SERVER,
PRODUCT_IOTUAPCOMMERCIAL & PRODUCT_MOBILE_ENTERPRISE.
- Added SAL annotations to all the code.
v2.0 (25 July 2016)
- Reworked the code in test.cpp to correctly report on versions of Windows
Server Enterprise. This follows testing on Windows Server 2016 Standard Technical
Preview 5.
v1.99 (4 April 2016)
- Updated code to refer to Windows 10 Anniversary Update instead of Windows
10 codename "Redstone".
v1.98 ( 4 March 2016)
- Updated copyright details.
- Provided IsWindows10RTM, IsWindows10Version1511 & IsWindows10Redstone
functions. Also updated the sample app to report this information.
v1.97 (19 September 2015)
- Code now always tries to use "RTLGetVersion" to get the underlying
OS details. Previously it would only do this if the code detected that it was
running on Windows 8.1 or greater. Also removed the GetRealVersionNumbersFromRegistry
method as this returns 6.3 on Windows 10 and as such is just unreliable. Please
note that DtWinVer will still report incorrect OS details if compatibility mode
is enabled for your application. Thanks to Dave Silber for prompting this investigation.
v1.96 (17 May 2015)
- Updated all code references of Windows Server 10 to Windows Server 2016.
- Added support for the following product types: PRODUCT_PROFESSIONAL_EMBEDDED,
PRODUCT_MOBILE_CORE, PRODUCT_EMBEDDED_INDUSTRY_EVAL, PRODUCT_EMBEDDED_INDUSTRY_E_EVAL,
PRODUCT_EMBEDDED_EVAL, PRODUCT_EMBEDDED_E_EVAL, PRODUCT_NANO_SERVER, PRODUCT_CLOUD_STORAGE_SERVER,
PRODUCT_CORE_CONNECTED, PRODUCT_PROFESSIONAL_STUDENT, PRODUCT_CORE_CONNECTED_N,
PRODUCT_PROFESSIONAL_STUDENT_N, PRODUCT_CORE_CONNECTED_SINGLELANGUAGE, PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC,
PRODUCT_CONNECTED_CAR, PRODUCT_INDUSTRY_HANDHELD, PRODUCT_PPI_PRO, PRODUCT_ARM64_SERVER,
PRODUCT_EDUCATION, PRODUCT_EDUCATION_N, PRODUCT_IOTUAP, PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER,
PRODUCT_ENTERPRISE_S, PRODUCT_ENTERPRISE_S_N, PRODUCT_PROFESSIONAL_S, PRODUCT_PROFESSIONAL_S_N,
PRODUCT_ENTERPRISE_S_EVALUATION & PRODUCT_ENTERPRISE_S_N_EVALUATION.
- Remove the word Installed from most of the methods.
- The download now includes a Winver14.sln solution for Visual Studio 2015
RC. This now allows you to build an ARM binary of DtWinVer which you can deploy
to Windows IoT Core on the Raspberry Pi 2. Also included is a precompiled ARM
binary of DtWinVer.
- Updated the code to clean compile on VS 2015 RC
v1.95 (30 April 2015)
- It turns out that the new detection code to detect Windows 8.1 with Bing
was flawed in the previous release as the PRODUCT_CORE_* ProductInfo values
just means the standard / core version of Windows 8.1. The code has now been
updated to use a registry search to correctly detect if Windows 8.1 with Bing
is installed.
v1.94 (29 April 2015)
- Updated the code to correctly handle / identify Windows 8.1 with Bing (aka
CoreConnected). This applies to the ProductInfo values: PRODUCT_CORE_ARM, PRODUCT_CORE_N,
PRODUCT_CORE_COUNTRYSPECIFIC, PRODUCT_CORE_SINGLELANGUAGE & PRODUCT_CORE.
Thanks to Petr Stejskal for reporting this issue. The suite value that is used
to identify this is COSVERSION_SUITE2_CORECONNECTED and the method IsCoreConnected.
- The ProductInfo value PRODUCT_PRERELEASE_ARM now correctly sets the underlying
processor type to ARM
v1.93 (17 January 2015)
- Updated copyright details.
- Fixed up the COSVersion::IsWindows2000AdvancedServer method to correctly
distinguish between server and client OSes.
- Fixed up the COSVersion::IsEnterpriseWindowsServer2003 method to correctly
distinguish between server and client OSes.
- Fixed up the COSVersion::IsEnterpriseWindowsServer2003R2 method to correctly
distinguish between server and client OSes.
- Fixed up the COSVersion::IsEnterpriseWindowsServer2008 method to correctly
distinguish between server and client OSes.
- Fixed up the COSVersion::IsEnterpriseWindowsServer2008R2 method to correctly
distinguish between server and client OSes.
- Fixed up the COSVersion::IsEnterpriseWindowsServer2012 method to correctly
distinguish between server and client OSes.
- Fixed up the COSVersion::IsEnterpriseWindowsServer2012R2 method to correctly
distinguish between server and client OSes.
- Fixed up the COSVersion::IsEnterpriseWindowsServer10 method to correctly
distinguish between server and client OSes.
v1.92 (1 October 2014)
- Updated code to support Windows 10 Technical Preview and Windows Server 10 Technical Preview.
v1.91 (14 April 2014)
- Updated copyright details
- Updated code to compile cleanly using VS 2013
- Updated code to report failure when compiled under Windows RT i.e. when
the WINAPI_FAMILY preprocessor value is anything other than WINAPI_FAMILY_DESKTOP_APP
- Added support to detect Windows 8.1 / 2012 R2 Update
v1.90 (21 July 2013)
- Fixed some /analyze warnings reported by VS 2013 Preview.
- The code now correctly handles the case where Windows 8.1 and Windows 2012
R2 lies about the real windows version number. For details see
http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074(v=vs.85).aspx.
This change should also mean that correct OS details are returned when the code
is run from a process in which AppCompat version number shims are installed.
Thanks to Christian Kaiser for reporting this issue.
- All RegOpenKeyEx now requests the non virtualized key via the KEY_WOW64_64KEY
value.
- Reworked the WriteVer application to correctly compile under Unicode.
- Win32s is now surfaced as a suite value.
- Major rework and refactoring of all the DtWinver code base and test app.
This rework should make it easy to update the code going forward.
- The suite details are now only reported after the underlying OS details
in the test app.
- The sample app now uses a larger stack buffer for displaying the OS details.
This avoids any potential stack overwrite issues when the number of suite mask
values returned is large.
- Fixed a bug in the generic thunking code path in GetProductInfo which resulted
in the Win32 API of the same name failing.
v1.89 (7 June 2013)
- Updated all code references of Windows Server codename "Blue" to Windows Server 2012 R2.
v1.88 (26 May 2013)
- Updated copyright details.
- Now includes support for Windows 8.1 formerly known as Windows "Blue".
I have also added code to support the server version of "Blue" which
for the moment I am calling Windows Server codename "Blue".
v1.87 (30 December 2012)
- Added support for the following product types: PRODUCT_EMBEDDED_AUTOMOTIVE,
PRODUCT_EMBEDDED_INDUSTRY_A, PRODUCT_EMBEDDED_A, PRODUCT_EMBEDDED_INDUSTRY,
PRODUCT_EMBEDDED_E, PRODUCT_EMBEDDED_INDUSTRY_E, PRODUCT_EMBEDDED_INDUSTRY_E,
PRODUCT_EMBEDDED_INDUSTRY_A_E, PRODUCT_CORE_ARM, PRODUCT_CORE_ARM, PRODUCT_CORE_N,
PRODUCT_CORE_COUNTRYSPECIFIC, PRODUCT_CORE_SINGLELANGUAGE, PRODUCT_CORE &
PRODUCT_PROFESSIONAL_WMC
- Fixed a bug with the handling of the PRODUCT_THINPC #define value
- Updated the code to compile cleanly on VC 2012
v1.86 (28 April 2012)
- Updated copyright details.
- My guess from last year was correct! Windows codename Server "8"
will become Windows Server 2012. The code has been updated to reflect this announcement
from
http://www.microsoft.com/en-us/news/Press/2012/Apr12/04-17MMSDay1PR.aspx.
- Updated code to refer to Windows codename "8" as Windows 8 based
on information from
http://windowsteamblog.com/windows/b/bloggingwindows/archive/2012/04/16/announcing-the-windows-8-editions.aspx.
- Removed tests for Windows 8 (Home Basic), Windows 8 (Home Premium), Windows
8 (Ultimate) from code.
- Added support for the following Product types: PRODUCT_PRERELEASE, PRODUCT_PRERELEASE_N,
PRODUCT_PRERELEASE_ARM, PRODUCT_PROFESSIONAL_PLUS, PRODUCT_ENTERPRISE_EVALUATION,
PRODUCT_STANDARD_EVALUATION_SERVER, PRODUCT_DATACENTER_EVALUATION_SERVER, PRODUCT_ENTERPRISE_N_EVALUATION,
PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER, PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER,
PRODUCT_MULTIPOINT_STANDARD_SERVER, PRODUCT_MULTIPOINT_PREMIUM_SERVER &
PRODUCT_THINPC, PRODUCT_EMBEDDEDINDUSTRY, PRODUCT_EMBEDDEDA, PRODUCT_EMBEDDEDINDUSTRYA,
PRODUCT_EMBEDDEDAUTOMOTIVE, PRODUCT_EMBEDDEDE, PRODUCT_EMBEDDEDINDUSTRYAE &
PRODUCT_EMBEDDEDINDUSTRYE
- Added support for Windows RT based on information from
http://windowsteamblog.com/windows/b/bloggingwindows/archive/2012/04/16/announcing-the-windows-8-editions.aspx.
v1.85 (17 September 2011)
- Updated the code to work correctly against the Windows 8 Developer Preview
and Windows 8 Server Developer Preview builds.
- Updated code to refer to Windows codename "8" and Windows codename
Server "8" instead of Windows 8 and Windows Server 2012.
v1.84 (2 July 2011)
- Updated to support Windows 8 and Windows Server 2012. These are the names
which DtWinVer currently uses to refer to the next client and server versions
of Windows respectively. At the moment there is no official details from Microsoft
on what the product names will be, but DtWinVer will be updated following any
announcements.
v1.83 (21 June 2011)
- Updated copyright details.
- Added support for the following Product types: PRODUCT_HOME_SERVER_PREMIUM,
PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE, PRODUCT_CLUSTER_SERVER_V, PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE,
PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE, PRODUCT_SB_SOLUTION_SERVER, PRODUCT_EMBEDDED,
PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT, PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE,
PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL, PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC,
PRODUCT_STORAGE_EXPRESS_SERVER_CORE, PRODUCT_STORAGE_STANDARD_SERVER_CORE, PRODUCT_STORAGE_WORKGROUP_SERVER_CORE.
Thanks to Petr Stejskal for prompting this update.
- Added a IsHomeServerPremiumEditionInstalled method.
- Fixed a bug handling PRODUCT_CLUSTER_SERVER_V ProductType
- Fixed a bug handling PRODUCT_CLUSTER_SERVER ProductType
- Fixed a typo in the name of IsSmallBusinessServerInstalled method
- Added a IsWindowsCENET method.
- Added a IsWindowsEmbeddedCompact method.
- The sample app has been updated to differentiate between the various marketing
names for CE i.e. Windows CE, Windows CE .NET and Windows Embedded Compact.
The code has also been verified to operate correctly on Windows Embedded Compact
using a OSDesign project on Visual Studio 2008 Professional, Windows Embedded
Compact, a sub project which builds DtWinVer for x86 CEPC and a VMWare image
of Compact 7 running the DtWinVer binaries. Thanks to Mike Ryan for prompting
this update.
v1.82 (8 August 2010)
- The code now differentiates between having the Hyper-V tools installed and
the actual Hyper-V OS. Thanks to Scott Pawloski for reporting this issue.
- I have removed the CE 3 & 4 and Dos And Win16 binaries from the zip
file. The code should still compile if you still have these ancient compilers
installed.
v1.81 (5 July 2010)
- Added support for the following Product types: PRODUCT_ENTERPRISE_E, PRODUCT_HOME_BASIC_E,
PRODUCT_HOME_PREMIUM_E, PRODUCT_PROFESSIONAL, PRODUCT_PROFESSIONAL_E, PRODUCT_PROFESSIONAL_N,
PRODUCT_SERVER_FOR_SMALLBUSINESS, PRODUCT_SERVER_FOR_SMALLBUSINESS_V, PRODUCT_SERVER_FOUNDATION,
PRODUCT_SOLUTION_EMBEDDEDSERVER, PRODUCT_STARTER_E, PRODUCT_STARTER_N, PRODUCT_ULTIMATE_E.
This means that the code now fully supports Windows 7 Professional, Windows
E Edition (The version of Windows 7 that was to be released in Europe without
Internet Explorer 8), Windows Server 2008 R2 Foundation Server and Windows Multipoint
Server 2010.
- Changed some of the names of the class methods for overall consistency
v1.80 (5 July 2010)
- Updated copyright details
- Added a IsWindowsVistaOrWindowsServer2008 method
- Added a IsWindows7OrWindowsServer2008R2 method
- Reworked the logic in all the Windows 2008 methods to use IsWindowsVistaOrWindowsServer2008
instead of IsWindowsServer2008. Thanks to Matt Fox for reporting this issue.
- Added comprehensive support for Windows 2008 R2
- Reworked the GetInfoBySpawingWriteVer method to work correctly on OSes which
use UAC. The code now uses _tempnam which places the temporary file in the "TMP"
directory.
- Fixed a bug in GetInfoBySpawingWriteVer where it incorrectly parsed the
dwSuiteMask values.
- Extended WriteVer and GetInfoBySpawingWriteVer to also update dwSuiteMask2
- Fixed a bug in the test app where it was incorrectly calling IsEmulated64Bit
instead of IsUnderlying64Bit to report whether the underlying OS was 64 bit
or not.
v1.79 (12 February 2009)
- Updated the VC 2005 project file to use more reasonable default project
settings
- Updated copyright details
- Includes provisional support for the Windows 7 Professional SKU. Note that
the code currently assumes that the BUSINESS SKU value refers to the newly documented
SKU of "Windows 7 Professional". I have not found any information
to confirm or deny this but this should become clearer as we approach the release
of "Windows 7. Any feedback on this would be much appreciated.
v1.77 (15 December 2008)
- Added support for detecting Windows 7
v1.77 (14 June 2008)
- Updated copyright details
- Code now compiles cleanly using Code Analysis (/analyze)
- Added support for Vista Home Premium N
- Added support for Vista Business N
- Added support for Vista Enterprise N
- Added support for Vista Ultimate N
- Added support for Windows Core Server
- Added support for Windows Hyper-V
- Added support for Windows Essential Business Server Management Server
- Added support for Windows Essential Business Server Messaging Server
- Added support for Windows Essential Business Server Security Server
- Added support for Windows Storage Server Enterprise Edition
- Added support for Windows Storage Server Express Edition
- Added support for Windows Storage Server Standard Edition
- Added support for Windows Storage Server Workgroup Edition
- Added support for Windows Cluster Server Edition
- Added support for Windows Business Server Premium Edition
v1.76 (20 June 2007)
- Include support for detecting Windows Home Server. Thanks to Petr Stejskal
for suggesting this update.
v1.75 (18 May 2007)
- Updated copyright details.
- Updated code to refer to Windows Server 2008 which was formerly known as
Windows Server codename "Longhorn".
v1.74 (21 September 2006)
- Included support for detecting all the different types of Vista SKU's, namely:
Windows Vista Starter Edition, Windows Vista Home Basic N, Windows Vista Home
Basic, Windows Vista Home Premium, Windows Vista Business N, Windows Vista Business,
Windows Vista Enterprise, and Windows Vista Ultimate.
- Fixed a bug in the displaying of unknown versions of Windows in the sample
app
v1.73 (17 May 2006)
- Updated copyright details.
- Updated documentation to use the same style as the web site.
- Updated documentation on version numbers which XP Media Center can have.
- Added support for Windows Server 2003, Computer Cluster Edition
- Added support for Windows Storage Server 2003 R2
- Added support for detecting if Windows is installed in a "Security
Application" mode
- Added support for detecting BackOffice components are installed
- Provided Visual Studio 2005 solution to build DtWinver with.
v1.72 (6 September 2005)
- Renamed some of the functions which detect Longhorn Server. Previously the
functions were incorrectly referring to Vista Server. Vista is the name of the
Windows Client. As of yet, a product name has not been picked for Longhorn Server.
- Now includes support for Windows Server 2003 R2.
- Now includes support for Windows XP Starter Edition and any future versions
such as Windows Vista Starter Edition
v1.71 (22 July 2005)
- Now includes support for Windows Vista, formerly Windows codename "Longhorn".
v1.70 (29 June 2005)
- Added support for detecting if code is running on Tablet PC Edition of Windows.
- Code now uses GetSystemMetrics call in preference to direct registry calls
to detect Media Center Edition of Windows.
- Renamed the functions which differentiate between the different OEM Service
Release versions of Windows 95. They are OSR 2[.1] = Win95B, OSR2.5 = Win95C.
For the gory details please see the KB article at
http://support.microsoft.com/kb/q158238/.
The code now also explicitly supports Win95C.
v1.69 (26 June 2005)
- INTEL_PROCESSOR enum is now more correctly know as IA32 which means x86
32 bit.
- Fixed a bug where the OS_VERSION_INFO parameter was not be zero set in the
function COSVersion::GetVersion. Thanks to "Remio" for reporting this issue.
v1.68 (10 April 2004)
- Removed a number of unreferenced variable warnings when you compile the
code on VS.NET 2003. Thanks to Edward Livingston for reporting these issues.
- Now includes support for Windows XP Media Center Edition. Please note that
if you want to do specific version checking of what version of Media Center
you have installed then you should use my CVersionInfo classes at
http://www.naughter.com/versioninfo.html
in conjunction with the following information which I culled from http://salloway.org.uk/mediacenter/2004/version.htm
which describes the various version numbers of ehshell.exe in \Windows\ehome
to the corresponding versions of XP Media Center Edition.
- dtwinver now returns the processor architecture via a call to GetSystemInfo
or GetNativeSystemInfo. This is used to differentiate between 64 Bit Windows
on Itanium and AMD64 processors.
- Renamed the global preprocesor defines used by dtwinver to use more unique
names
- Added make files and binaries for AMD64 processors
v1.67 (8 March 2003)
- Updated a comment in COSVersion::GetProductSuiteDetailsFromRegistry re NT
Embedded.
- A comment from John A. Vorchak: On NTe (NT Embedded) and XPE (XP Embedded),
all of the versions (of DTWinver) work just fine so long as the components to
support them are included in the images, which itself is kind of a crap shoot.
I think that you would probably find that most images will not support the DOS
or Win16 versions however most will support the Win32. Many of the images that
folks build either do not include the DOS subsystem and some of them do not
include Explorer, so it really can't be said that all builds will support them
however it is not difficult for a developer to understand which version would
work for them as they understand their target systems better than anyone and
at least one version would certainly work for almost all images. As far as Win2k
(Server Appliance Kit), I haven't done enough testing with that platform, nor
do I currently have any built images with the SAK to say positively or otherwise.
More than likely you would find no problems with the SAK images since they typically
follow W2k much more than NTe or XPE do. Author: If you are writing for an embedded
OS, then there is little use for DTWinver!!, since the developer has very tight
control over the runtime environment. Also if you do use DTWinver on an embedded
version of Windows, you will probably compile in the dtwinver code rather than
ship the sample binaries I include in the dtwinver download.
v1.66 (12 February 2003)
- Fixed a compiler warning in GetNTServicePackFromRegistry which occurs when
the code is compiled with the Watcom compiler. Thanks to Christian Kaiser for
reporting this.
v1.65 (8 February 2003)
- Added explicit support for detecting Windows XP Service Pack 1a
- Added support to determine the HAL on NT Kernels. Thanks to Christian Kaiser
for suggesting this addition.
v1.64 (30 January 2003)
- Added explicit support for detecting NT Service Pack 6a
v1.63 (10 January 2003)
- Update to support MS deciding to change the name of their Whistler Server
product. The product will now be called "Windows Server 2003".
v1.62 (11 October 2002)
- Fixed a problem where on Windows XP, the test program will include the text
"(Standard Edition)"
- Added two variables to the OS_VERSION_INFO structure to report the minor
service pack number
- Removed the OS_VERSION_INFO structure from the global namespace
- Removed all static member variables from the class
- Added a member variable to the OS_VERSION_INFO to return the various "suites"
installed
- Reduced the number of calls to WriteVer to 1 when called from dos code path.
- Completely reworked the internal WhichNTProduct method
- General tidy up of the header file
- Completely reworked the ValidateProductSuite method
- Now only 1 call is made to WhichNTProduct throughout a single call to COSVersion::GetVersion
- Now only 1 call is made to ValidateProductSuite throughout a single call
to COSVersion::GetVersion
- Fixed an unitialized variable problem in COSVersion::IsUnderlying64Bit
- Changed "WhichNTProduct" method to "GetNTOSTypeFromRegistry"
- Changed "ValidateProductSuite" method to "GetProductSuiteDetailsFromRegistry".
- Now correctly reports on Terminal Services being in Remote Admin Mode on
OS which do not support calling GetVersionEx using an OSVERSIONINFOEX structure
i.e any NT 4 install prior to SP6.
- 16 bit Windows code path now reports as much NT information as the Win32
code path
- Fixed a bug in COSVersion::GetInfoBySpawingWriteVer which was failing if
it encountered an empty CSD string. This was spotted on Windows .NET Server
which since it is in beta still (as of October 2002) does not have any service
pack!.
v1.61 (8 October 2002)
- Now uses OSVERSIONINFOEX it possible in the Win32 or Win64 code paths. This
provides for more reliably detection of Windows XP Home Edition.
- Renamed the functions which detect Windows .NET Server 2003. Also updated
the test code which prints out these names
- Provided explicit support for Windows .NET Web Server
- Fixed a bug in the display of the minor OS version number on Windows .NET
Server.
- Made the project for WriteVer a VC 5 project instead of VC 6 which it was
up until now.
- Reworked the internal function WhichNTProduct to use a constant input string
parameter
- Added explicit support for Windows NT / 2000 / XP Embedded
- Added explicit support for detecting Terminal Services in remote admin mode
v1.6 (30 August 2002)
- Provided an update CE workspace to work correctly in eMbedded Visual C++
v3. All build configurations for eVC 3 have also been provided.
- Optimized the usage of _tcscat and _tcscpy in the test app which comes with
Dtwinver.cpp
- OEM Info string and Platform Type string is now returned for CE code path
- Fixed display of minor version number for example Windows.Net is version
number v5.20 but should be shown as 5.2 to be consistent with what the native
ver command displays
- Provided a new CE workspace to work correctly in eMbedded Visual C++ v4.
All build configurations for eVC 4 have also been provided.
23 March 2002
- Updated Win32 and Win64 apps to have version info in them. No changes have
been made to the main dtwinver code.
v1.5 (13 December 2001)
- Major upgrade. Now 16 bit DOS path can return as much information as native
Win32 code. This is achieved by spawning off the Win32 utility WriteVer with
a special command line option. Please note that if you intend deploying dtwinver
then you must now ship the writever.exe file in addition to linking in the dtwinver
code into your application. Also this utilty needs to be in the path or current
directory when the dtwinver code is executing. Thanks to Chaz Angell for prompted
me into finding a solution for this last major item missing in dtwinver.
v1.42 (10 October 2001)
- Added code to 32 bit code path to detect if we are being run under 64 bit
Windows. Also updated the sample app to distinguish between emulated 64 bit
and underlying 64 bit.
- Updated the sample app to call XP Server its proper name which will be "Windows.NET
Server"
v1.41 (10 February 2001)
- Updated function names etc following MS decision to call Whistler "Windows
XP".
v1.4 (29 January 2001)
- Added explicit support for XP (Whistler) Personal
- Added explicit support for XP (Whistler) Professional
- Added explicit support for XP (Whistler) Server
- Added explicit support for XP (Whistler) Advanced Server
- Added explicit support for XP (Whistler) Datacenter
- Added explicit support for XP (Whistler) 64 bit (all flavours)
- Made all the code into a C++ class called COSVersion
- Rewrote all the generic thunk code to be easier to follow
- Generic think code now uses CallProcEx32W
- Added explicit support for BackOffice Small Business Edition
- Added explicit support for Terminal Services
- 16 bit code path now can determine ProductSuite and ProductType type thro
additional generic thunk code
- Provided a 64 bit test binary and make batch file (make64.bat) for those
lucky enough to have an Itanium processor and a beta of 64 bit XP.
- Provided a Embedded C++ workspace and X86 Release binary.
- Updated copyright information
3 July 2000
- Minor update to the test program to correctly report emulated OS on Windows
ME.
v1.35 (30 June 2000)
- Added explicit support for Windows Millennium Edition
v1.34 (2 February 2000)
- Fixed a minor copy and paste bug in the test program.
v1.33 (28 July 1999)
- Fixed a problem when application is build in non-huge/large memory model
in Win16.
- Added explicit support for returning NT and Win9x service pack information
from Win32 and Win16 code paths.
- Updated test program to not bother reporting on any info which does not
exist. e.g. if there is no service pack installed, then we don't bother displaying
any info about service packs.
- Added explicit support for NT Enterprise Edition.
v1.32 (26 July 1999)
- Added explicit support for Windows 98 SP 1.
v1.31 (23 July 1999)
- Tested out support for Windows 98 SE, minor changes required.
v1.3 (23 June 1999)
- UNICODE enabled the code.
- Removed need for the dwOSVersionInfoSize variable.
- Added support for detecting Build Number of 95 and 98 from DOS code path.
- Now ships as standard with VC 5 workspace files.
- Added explicit support for Windows 95 SP 1.
- Added explicit support for Windows 95 OSR 2.
- Added explicit support for Windows 98 Second Edition.
- Added explicit support for Windows 2000.
- Added explicit support for Windows CE.
- Added explicit support for Windows Terminal Server's.
- Added explicit support for NT Stand Alone Server's.
- Added explicit support for NT Primary Domain Controller's.
- Added explicit support for NT Backup Domain Controller's.
v1.2 (13 September 1998)
- Updated the sample app plus the DtWinVer code to explicitly support Windows
98.
v1.1 (8 May 1997)
- Fix to remove Unicode and TCHAR code when being compiled for Win16.