KeyAccess on Win 8.1 and 2012 R2

In previous versions of Windows, calling the GetVersion(Ex) APIs would return the actual version of the operating system (OS)…

This is how Microsoft describes significant changes in how the GetVersion(Ex) APIs work in Windows 8.1. As a result, older KeyAccess clients on Windows 8.1 will be told that the OS is 8.0, and report this to KeyServer.

In order to see the correct OS, you should upgrade KeyAccess on 8.1 / 2012 R2 computers to version 7.1.0.5. (note you will also have to upgrade KeyConfigure to version 7.1.0.5 to correctly display all the new OS edition names)

We see this as a Microsoft "bug" – i.e. an utterly nonsensical change to a Windows API. Microsoft basically explains that developers would frequently misinterpret the result of GetVersion, causing unnecessary messages about incompatibility. Apparently Microsoft would prefer that the sloppy programs work smoothly, while well-written programs will be misinformed about the OS environment as a result of this change.

So now because of someone’s sloppy code, we have in Windows 8.1 an API that lies to us and claims it is on 8.0. There’s a workaround – we have change the KeyAccess binary to explicitly state that it supports 8.1. What is unclear is what will happen when a new OS comes out (let’s call it 8.2). Perhaps today’s KeyAccess will be able to read the new version properly, or perhaps we will have to once again rebuild KeyAccess in order to say “please don’t lie to us, we can handle the truth”.

Tags: ,

No comments yet.

Leave a Reply