

Windows 10: Code that uses 'os.StartsWith(“Windows 9”)' - thomasbachem
https://searchcode.com/?q=if%28version%2Cstartswith%28%22windows+9%22

======
gjulianm
I don't find this search reliable at all. There are a lot of completely
unrelated results. I couldn't find any related match on the 2.000+ Python
results, for example. Same with C++. This is being publicized as "proof" of
the rumor but it's not representative at all.

The Windows C/C++ API returns a structure with version numbers [1], same with
the C# one [2]. Other languages just wrap the native C API call, GetVersionEx.

The most troubled framework is Java: because of some strange design decision,
you can only get the version _as a string_ (see [3]), and that makes
impressively easy for programmers to screw up version checks. However, as
other commenters have said, those apps could run on compatibility mode and
Windows would solve the issue itself instead of completely changing an
operating system's name.

1: [http://msdn.microsoft.com/en-
us/library/windows/desktop/ms72...](http://msdn.microsoft.com/en-
us/library/windows/desktop/ms724451%28v=vs.85%29.aspx) 2:
[http://msdn.microsoft.com/en-
us/library/system.environment.o...](http://msdn.microsoft.com/en-
us/library/system.environment.osversion%28v=vs.110%29.aspx) 3:
[http://stackoverflow.com/questions/228477/how-do-i-
programma...](http://stackoverflow.com/questions/228477/how-do-i-
programmatically-determine-operating-system-in-java)

~~~
micampe
I'm sure the API provides the information, that doesn't stop developers from
doing crazy things. The rumor, whether true or false, is actually just more
evidence of how Microsoft is devoted to binary compatibility. It's a funny
bit, yes, but doesn't say anything bad about MS at all.

------
hk__2
Previous discussion:
[https://news.ycombinator.com/item?id=8397664](https://news.ycombinator.com/item?id=8397664)

------
pavlov
My theory about the "Windows 10" name is that there is an intermediate Windows
Phone release coming in early 2015, and they've decided to call that Windows
Phone 9. Hence the unified release will be version 10.

------
bcj
I ran into some code a few days ago that wouldn't install because it was
checking OS X version as a string and '10.10' < '10.5'. Bad code will always
find a way

~~~
songgao
Any chance it was Matlab? I had to change version to 9 or 90 to run Matlab

~~~
bcj
It was PyObjC.

------
csandreasen
Apparently one of the perks to not calling it Windows 9 is that Microsoft
doesn't have to deal with poorly written OS detection code that searches for
"Windows 9" in expectation of it matching "Windows 95" or "Windows 98".

------
snarfy
They could have just ran those apps in compatibility mode, which returns
different values for all the GetWindowsVersion calls.

Or they could rename the entire OS.

~~~
TillE
There are no APIs that return a string of the product name. GetVersionEx gives
you numbers. To screw up in this manner, you have to be relying on at least
two layers of broken code on top of the really simple API that you should be
using directly.

So I don't buy this rumor at all. The number of real applications that 1)
remember Windows 9x exist, 2) aren't completely broken on modern Windows
anyway, and 3) go out of their way to use some convoluted version checking
method has to be extremely small.

~~~
tokenizerrr
This "convulted version checking method" is the default way to do it with
Java, I'm not sure if there's any other programming languages that do it as
well.

~~~
ohyesyodo
Source for that?

~~~
tokenizerrr
Yeah, the OP[1]. A lot of the returned results are Java code, alternatively
there's also [2].

[1]
[https://searchcode.com/?q=if%28version%2Cstartswith%28%22win...](https://searchcode.com/?q=if%28version%2Cstartswith%28%22windows+9%22)

[2]
[http://docs.oracle.com/javase/tutorial/essential/environment...](http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html)

~~~
ohyesyodo
No. He said that it was the 'default' way of doing it. Yes, it has happened X
times, that does not mean it's the default way of doing it. Maybe there's some
other method which is done a lot more often and hence should be considered the
'default' way.

------
more_original
CP/M/3.1 (Pentium (like 386); Intel AMD) DOS 6.0 Windows/6.4 (NT, like Mac OS
X) Windows/95 Windows/10

------
DanBC
So, when they get to Windows 19 do they need to skip to 21 to avoid all the
2000 checks?

~~~
unclebunkers
There won't be a windows 20, or anything closet to that. If we're still using
computers the way we are now in 20 years, then we've seriously failed as a
species.

~~~
lanna
We are still using computers now the way we were 20 years ago!

Remember Windows 95? That was 19 years ago!

It's easy to imagine someone like you in 1995 proclaiming there would not be a
Windows 2015, or anything close to that.

Nothing has fundamentally changed, Internet and all. Even tablets, smartphones
and multitouch interfaces are still basically the same old thing.

~~~
unclebunkers
I'm quite aware. Make note.

------
outworlder
There are no good reasons to check for an OS version anyway. Checking for the
platform, ok. Not the version. That can be handled with feature detection.

~~~
ashearer
I generally agree, but I'd amend that to "there are few good reasons". When an
API is present but buggy, sometimes there's no good way around a version
check. It can still be regarded as a last resort.

------
serve_yay
Ahhh, come on already with this one. Let it die.

------
cssandjs
Oh my!

So that's why they went with 10 - it makes sense now.

