Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I don’t believe that for one moment.

If you ask Win32 for its version number you get a VERSION structure with Major/Minor/Build fields - not a string.

Windows faked its reported version information to software for compatibility purposes since Windows XP (opt-in) and since Windows 8 (opt-out, using application manifests) - so any program that doesn’t claim support for Windows 8, 10, etc is stuck in “Windows Vista mode” - so even if software was doing an osMarketingName.StartsWith(“Windows 9”) check it would be straightforward to make it work.



Reading https://www.gaijin.at/en/infos/windows-version-numbers, major.minor.build doesn’t uniquely identify a Windows version.

Windows 7 and Windows Server 2008 R2 both are 6.1 build 7600, for example.

Also, suppose you check the version for compatibility checking, what do you do if you get a version that you don’t know about, say “6.4, build 7709”? You can give up and declare your program doesn’t work with this version, but that may lead to lots of support calls when Microsoft rolls out a service pack. So, instead, programs try to guess from the version string what OS they run on.

And yes, ideally, programs check for features (https://docs.microsoft.com/en-us/windows/win32/sysinfo/opera...). Unfortunately the world isn’t perfect.


Internet Explorer 5.5 on Windows 95 looked like this:

> Windows 95 browser agent string: Mozilla/4.0 (compatible; MSIE 5.5; Windows 95; BCD2000)

Back then browser agent checking was used a lot more.

So a good reason to name it "10" instead of "9" is to differentiate it from Windows 95/98 for code that did things like:

> browser.contains("Windows 9")




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: