So there's really two questions that need addressing here. The first is how we address OS detection in the .net framework, because the method we're using seems flawed. OSVersion has been deprecated, so it's questionable that we should be using this at all, but as above, with the appropriate files in place it works as intended.

However, the second thing that needs addressing is that the recommended best practice is to properly manifest your programs, and so perhaps we shouldn't be supporting those that don't use a manifest. That will require some more thought though.

I'm just repairing a pull request to fix the OS detection code based on using a manifest file, once released I'll update this post, and then I suggest you create an application manifest that includes the Windows 10 guid.

Actually thinking about this, what's wrong with the version pulled from Winver thats currently displayed? Eg 10.0.14393.0. You'd rather be given the version number eg 1607 in this case? Just trying to determine what that gives you over the build number when its easily verified.

Looking at this a little further, I'm not entirely sure its possible to get this UBR with how we're detecting the version information. UBR doesn't appear to be supported - every test I've run just pulls out .0. I'll speak to a colleague about it and see if we can do anything but if it needs a rewrite of the OS detection class I'm not sure we'll pursue it due to the knock on effects this could have.