Possible Reason Behind Version Hop to Windows 10: Compatibility
First time accepted submitter ndykman (659315) writes The Independent reports that a MS developer has suggested a real reason behind the Windows 10 name: old code. More specifically, code that looks for "Windows 9" to determine the Windows version. Fine for Windows 95 or Windows 98, but not so great for a new operating system. The article includes a link that shows that yes, this would be a problem.
Windows 9.8, Secure Edition
Get free satoshi (Bitcoin) and Dogecoins
It would have been better if they'd gone with Windows 11. One better.
Who ordered that?
If something as stupid as the name of the operating system can trip up some applications, what about the rest of the code?
Instead of giving programmers dozens of ways of checking and doing things, they should be forced into doing it one way. Easier to prevent mistakes, check for errors, etc.
Get free satoshi (Bitcoin) and Dogecoins
And looking at the code examples like 90% of the cases where in the Java sources.
18 years as a developer, I've never used such a shitty test..
Its the same thing as with the whole Document and settings vs C:\users. There's always been a good way to get it, but most developers suck balls and won't spend the 20 seconds it takes to figure it out.
GetVersionEx(Inout_ LPOSVERSIONINFO lpVersionInfo);
Returns the major and minor versions, build number, platform id, service pack major and minor, and the product type.
It basically spits out all the crap in that appears on the bottom right corner of windows when you boot up in safemode.
Also unlike the stupid marketing names the OS versions actually make sense.
Windows 8 returns version 6.2.
I call this hogwash. When you ask Windows what version it is in software, it doesn't return its marketing name (Windows 95, Windows 2000), it returns it's platform ID (1 for DOS based, 2 for NT based), and its version numbers in major, minor format. Windows 95 returned 4.0 (platform 1), Windows 98 returned 4.1 (platform 1). Windows 2000 returned 5.0 (platform 2).
In fact, I can't speak for the latest versions of Windows (because it has been a while since I've programmed), but even as late as Windows XP, a call to "get version" returns something completely different from the marketing version number/name.
For example, under Windows 95, GetVersion() would return "4.0." Under XP, it reports NT 5.1 or NT 5.2.
http://en.wikipedia.org/wiki/L...
Cogito, igitur comedam pizza.
Windows! Nein!
Regards,
-Jeremy
Of course not, they call it Microsuave Ventanas
Perl Programmer for hire
I'm reminded of checking for browser version in Javascript when you need to hack around a limitation or non-standard here or there (especially back in the IE6 days). Anyone worth their salt said "You don't ask the browser what it is, you ask what it can do" because the easy ways to check were also easy to spoof. So it was better to see if it threw an error when you did X, or if you could access property.Y, etc., then use those results to figure out which browser you were running in. I don't think it's done as often these days, partly because of engines catching up and partly because of frameworks doing it for you.
Anyway, I don't know how trivial it would be to spoof the system information, but relying on the system to report its proper version doesn't seem like a good idea to me. Speaking of version, code like the last link is looking at the marketing name when looking at the actual version (i.e. Windows 6.1) would be better. Maybe Microsoft should just go with the internal version number: it will cause as much marketing confusion as Windows 10, avoid the "Windows 9" checks, and make the internal/marketing names more consistent.
So you're telling me that Microsoft decided/had to skip a version number because of existing Java code? Rly? Srsly?
they should have just changed the whole name from "windows" to "Balmers gone, and its safe to us windows again, please come back".
Some drink at the fountain of knowledge. Others just gargle.
Shame there's not some method for inserting plain text into code that will explain what you're doing, but has no effect on the actual compiled application. Maybe we could call them comments or something.
Or maybe there's some way of referencing a number, but with a name which describes what the number is so that it can be reused. It's be great if you could guarantee that the number couldn't be changed. Hmm, what could we call that?
Old function: GetVersion() and GetVersionEx() [for Windows 8 and older]
New function: GetVersionEx2() [for Windows 9 and newer]
Seems a less intrusive solution that jumping a whole major Windows revision.
I figured it had to do with Roman numerals.
They skipped Windows 4 (IV) and they are skipping version 9 (IX)
I figured there is a bug in the roman numeral check for the numbers the need to subtract before the value.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Considering the industry move to 64-bit (how long ago now?), how easy is it to get a 16-bit DOS or a 32-bit Windows app to run in a 64-bit *NT* environment?
Between 16 and 32 bit, you had (for 9x) the fact that the kernel was actually 16-bit but could address a 32-bit address space, for 32-bit NT systems you have WOWExec (a DOS VM with a shared memory space) but for running 16-bit apps on 64-bit platforms you have to go one step further than a compatibility subsystem (ie WOWExec) and run the app in a third party sandbox - or virtual machine, if you will - such as VirtualBox running a dedicated DOS or 9x session in a segregated memory space. Other esoteric limitations particularly in 64-bit Windows versions prompted Microsoft to issue an update which included zero-length root files (AUTOEXEC.BAT and CONFIG.SYS among others) in August 2010.
Long story short, if you're running into problems with "Windows 9" it's nothing to do with pulling a version number, you're trying to make a 64-bit system do a 16-bit thing which it was clearly not meant to do and will fail spectacularly anyway.
Political debates have me rolling my eyes so much I think I got optical whiplash. I should sue. - Foamy The Squirrel
That's a load of BS. Is there even an API that returns the "marketing" version of the OS name? I know of no way to programmatically get the text "Windows 95" or "Windows 98", etc, in the Windows API, unless I build that string myself. The APIs that return the OS version use a completely different versioning convention (one that actually makes sense and is consistent). Maybe there is some way to dig through the registry and find that, but any app doing that deserves to be broken anyway.
Further, the example and "proof" in that second link is also a load of crap. That is only via some Java API, which does exactly what I said above, which is turn the actual internal version into some higher-level OS name. Trust me, MS doesn't give the slightest concern about any broken Java apps.
They named it Windows 10 for marketing reasons. End of story. Quit being retarded.
Better known as 318230.
The problem isn't making sure code that worked on Windows 95 still works. It's code that wouldn't run in the DOS code tree, but will still run in the NT tree, and has code that prevents trying to run it on older systems...and, instead of checking for Windows_NT and proceeding, checked for Windows_9* and stopped.
And, for the record, on a Windows 7 box, the OS environment variable is still "Windows_NT". Somebody out there must have a 95 (or 98) box still running that could check if it shows "Windows_95". ("echo %OS%", but if you've still got a box that old, you knew that.)
not without patch KB41592653589793238462643383279502884197169399375105820974944592307816
rewriting history since 2109
The whole article is Bull since MS Windows uses the NT kernel and their so called Windows 10 has an NT 6.4 kernel (see here ). For those that won't read the article the following is a list of NT versions from MS Windows Vista.
:)) but the basic kernel is only a minor increment. If the developers find difficulty in writing software that can't determine revision difference then I suggest they go back to school. Basically the whole reason to go to version 10 is IMHO marketing hype of which the Microsoft PR department excels (pun intended).
NT6.0 - MS Windows Vista, Server 2008
NT6.1 - MS Windows 7, Server 2008 R2, Home Server 2011
NT6.2 - MS Windows 8
NT6.3 - MS Windows 8.1
NT6.4 - MS Windows 10
Sure some of the apps my be different (slightly
There ain't no such thing as proprietary standards only proprietary formats. Standards are by definition open.
Actually the code I saw doing this was Java .....
Win32 guys know which API to call to get version info properly, and it's not a string comparison.
Why wouldn't they just change whatever internal version number is being improperly queried to 10, have the correct API call return 9, and market it as 9?
There is over a dozen different ways to get Windows version that I can think of. One of them is the official API, and others are hacks. but that doesn't stop people from using them, for the same reason why you see checks like b.toString().length==5 to check whether a Boolean value is true.
The correct approach would be to issue an advisory for all these shitty programmers to update their applications or they may not work on Windows 9. Fix your shit, or GTFO, basically.
One of the reasons why Windows remains popular in the enterprise is that shit doesn't just break like it would under your proposed model. Even if that means that there have to be lots of hacks in the OS itself to basically work around bugs in applications. As an engineer, you can rightfully cringe at it, but people pay for it, so...
If your code is old enough to be checking for Windows 9x, chances are you're really asking "am I running under NT, or 9x?"
A relatively recent program designed for XP or Vista could be checking for Windows 9x during install, like if (OS.name.StartsWith('Windows 9')) {print "Your computer is too old, please upgrade to XP"}
We also know not to rely on the kernel version number to work out what the given version of Windows we're running on is capable of - you ask it if has the capability.
I was actually moderately surprised by the fact that people were using the product name to work out the version - it's not even that easy to get that string. I think there's a WMI object that contains it, but it was only added in Vista. I can only assume it's generally developers using some form of helper library that maps the version number to friendly names for them.
Yeah, I had a sig once; I got bored of it.
Your double-negative and decision to break up one complete sentence into two incomplete sentences with typo really undercuts your argument...
Ken
It's how Java exposes the OS name to its users. If you look in that list, that os.name property is a native Java function. The Java library itself probably goes through all the BS required to get that, instead of the version number or some other more reliable method to see if your stuff will run.
Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
Maybe it is simply that the project that would have been Windows 9 got canned within Microsoft. I am sure work on Win 9 was underway by the time Win 8.0 was released just to have its plug pulled after the dismal and entirely preventable (if Microsoft would have listened to beta testers) sales figures and adoption rate of Win 8. As much speculation as any other explanation. In the end it does not matter, it's just a name.
If you'd actually look at the example provided, this is generally modern applications looking for Windows 9x versions in order to throw an error, and they did it in a time when "Windows 7" and "Windows 8" are actual things that really exist, not a nebulous time where MS was changing its naming format every couple releases.
The very first example is a fork of OpenJDK 6, and it appears to be code carried over from the original, not new code. Another result was from OpenJDK 1.7, so this is more than likely poorly written code that has simply never been a problem before.
People would probably blame Microsoft if all Java apps broke on Windows 9, even though it was Java's shitty programmers that did the deed, and really lots of programmers do stupid stuff like this and would blame MS for it. Unlike most bugs, MS doesn't really have any option but to change its name to fix this for software developers. It's not like a dev relying on the buggy behavior of an API that MS can work around for them. This is wide scale, pervasive shitty programming in third party programs that spans more than a decade, and Microsoft gets to deal with it.
Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller