7 ms·
Windows 10: Code that uses 'os.StartsWith(“Windows 9”)'
- hk__2 12y agoPrevious discussion: https://news.ycombinator.com/item?id=8397664 https://news.ycombinator.com/item?id=8397664
- snarfy 12y agoThey 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 12y agoThere 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 12y agoThis "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 12y agoSource for that?
- MHordecki 12y agoSystem.getProperty("os.name")
- tokenizerrr 12y agoYeah, 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%22windows+9%22 https://searchcode.com/?q=if%28version%2Cstartswith%28%22win... [2] http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html http://docs.oracle.com/javase/tutorial/essential/environment...
- ohyesyodo 12y agoNo. 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.
- TillE 12y agoIt's insane to check version numbers as strings. I guess the JDK is assuming you're not actually doing anything important with those properties (eg, just writing them to a log). Python for example wraps GetVersionEx appropriately with sys.getwindowsversion()
- campuscodi 12y agoI would go with renaming the entire OS. Let it be FAOSDSACH, as in Formerly Awesome Operating System Destroyed by Suits And Corporate Heads
- serve_yay 12y agoAhhh, come on already with this one. Let it die.
- cssandjs 12y agoOh my! So that's why they went with 10 - it makes sense now.
- outworlder 12y agoThere 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.
- nshepperd 12y agoThere's one good reason - sometimes feature detection lies. Or the feature you are looking for is implemented nonstandardly (brokenly).
- ashearer 12y agoI 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.
- unclebunkers 12y agoSorry, but this doesn't even come close to working in the real world. If you're on the web, then this makes sense. However, on the metal, you need to know versions.
- gjulianm 12y agoI 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/ms724451%28v=vs.85%29.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms72... 2: http://msdn.microsoft.com/en-us/library/system.environment.osversion%28v=vs.110%29.aspx http://msdn.microsoft.com/en-us/library/system.environment.o... 3: http://stackoverflow.com/questions/228477/how-do-i-programmatically-determine-operating-system-in-java http://stackoverflow.com/questions/228477/how-do-i-programma...
- cobalt 12y agoNever underestimate a programmers ability to fuck shit up
- micampe 12y agoI'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.
- DanBC 12y agoSo, when they get to Windows 19 do they need to skip to 21 to avoid all the 2000 checks?
- unclebunkers 12y agoThere 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.
- deleted 12y ago[deleted]
- deleted 12y ago[deleted]
- lanna 12y agoWe 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 12y agoI'm quite aware. Make note.
- deleted 12y ago[deleted]
- DanBC 12y ago2 digit dates seemed safe enough because lol no one would be using this software in the year 2000. IPv4 address space seemed plenty enough. 640 k should be enough.
- unclebunkers 12y ago
- deleted 12y ago[deleted]
- pavlov 12y agoMy 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.
- csandreasen 12y agoApparently 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".
- deleted 12y ago[deleted]
- bcj 12y agoI 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
- more_original 12y agoCP/M/3.1 (Pentium (like 386); Intel AMD) DOS 6.0 Windows/6.4 (NT, like Mac OS X) Windows/95 Windows/10