Tcl Source Code

Ticket Change Details
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2018 Conference, Houston/TX, US, Oct 15-19
Send your abstracts to
or submit via the online form by Aug 20.

Artifact ID: 816421b8bf50b7064e8a2520b1513c40df1c7c04
Ticket: 651e828a525828c89dc2a77bb5ac260fd0a39e25
Wrong Windows version reported for Windows 8.1
User & Date: apnadkarni 2014-01-30 15:55:18

  1. Change assignee to "nobody"
  2. Change closer to "nobody"
  3. Change cmimetype to "text/plain"
  4. Change comment to:

    On Windows 8.1, tcl_platform(osVersion) is reported as 6.2 even though it is actually 6.3. This is due to a change in behaviour of the GetVersionEx Win32 API which reports 6.2 if the exe does not contain a manifest.

    Jan has fixed this in the trunk by adding the appropriate manifest. However, this is not a permanent fix. When Windows 8.2 (or whatever) rolls around, the manifest will have to change AGAIN and existing tclsh would still be broken.

    Moreover, the manifest fix only fixes tclsh and wish, not when the tcl dll is loaded from other executables.

    Therefore, a better fix might be to use the undocumented RtlGetVersion function which returns the real OS version. It has the same interface as GetVersionEx (the returned struct is the same though typedef'ed differently), but has to be loaded dynamically from ntdll.dll. This will permanently solve the problem for future versions and all executables that load the tcl dll (unless Microsoft breaks that function in the future as well).

    See and

  5. Change foundin to "8.6.1"
  6. Change is_private to "0"
  7. Change login to "apnadkarni"
  8. Change priority to "5 Medium"
  9. Change resolution to "None"
  10. Change severity to "Minor"
  11. Change status to "Open"
  12. Change submitter to "apnadkarni"
  13. Change subsystem to "69. Other"
  14. Change title to "Wrong Windows version reported for Windows 8.1"
  15. Change type to "Bug"