Confusion over whether you have Windows XP SP1 or SP2


Some support people have asked me why the "About" dialog seems to be kind of schizophrenic as to whether a machine has Windows XP SP1 or SP2.

About Windows Microsoft® Windows
Version 5.1 (Build 2600.xpsp2.040919-1003 : Service Pack 1)
Copyright© 1981-2001 Microsoft Corporation

Why does the version string say "xpsp2" and then "Service Pack 1"? Is this machine running SP1 or SP2?

It's running Service Pack 1. The build number string is a red herring.

Why does the build number string say "xpsp2" when the computer is running SP1?

Because Windows XP Service Pack 2 was a victim of changing circumstances.

After Service Pack 1 shipped, there was no indication that Service Pack 2 was going to be anything other than "just another service pack": A cumulative update of the fixes that had been issued since the release of Service Pack 1. Therefore, the release team created a new project, called it "xpsp2" and when a fix needed to be made to Service Pack 1, they made it there. It was called "xpsp2" because the assumption was that when the time came to release Service Pack 2, they would just take all the fixes they had been making to Service Pack 1 and call that Service Pack 2. In other words, "fixes to Service Pack 1" and "working on Service Pack 2" were the same thing.

Of course, things changed, and a "new" Service Pack 2 project was created for the "real" Service Pack 2 changes, leaving the old "xpsp2" project to be merely the place where Service Pack 1 fixes were developed.

Yes, it's confusing. We're kind of embarrassed by the whole project naming fiasco. That's what happens when plans take a radical change after work has already started.

Anyway, there you have it, the long and boring story of why fixes for Service Pack 1 have "xpsp2" in their build string.

Comments (38)
  1. Anonymous says:

    And what about the fixes for Service Pack 2?

    For example, the version of Shell32.dll shippet with the Service Pack 2 is:

    6.00.2900.2180 (xpsp_sp2_rtm.040803-2158)

    The, the post-SP2 hot fix <A href="http://support.microsoft.com/kb/890047">KB890047</A&gt; install an updated versione of Shell32.dll:

    6.00.2900.2578 (xpsp_sp2_gdr.041130-1729)

    What means "GDR"? And when Service Pack 3 will come the version string of Shell32.dll will change?

  2. Anonymous says:

    Don’t worry about it, even Mozilla (you know, the guys who can’t do any wrong?) haven’t updated their copyright notice in ‘About’ to read 2005…

  3. Anonymous says:

    GDR means "General Distribution Release".

  4. Anonymous says:

    On the subject on service packs…

    …anyone remember this?

    http://www.netzmafia.de/service/startrek.html

  5. Anonymous says:

    qsx: I just had to look that up in my copy of 1.0.1. That’s kwality right there. I wouldn’t expect a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=283525">fix</a&gt; any time soon, either.

  6. Anonymous says:

    Why is SP2 still build 2600 (or "Build 2600.xpsp_sp2_rtm.040803-2158 (Service Pack 2)" to be exact) when many of the DLLs have higher build numbers? Is it because the Kernel did not change in SP2 and is still build 2600? Is it some weird appcompat thing?

    What’s the most correct way to detect SP2 programatically?

  7. Anonymous says:

    Not programmatically, but using your own human eyes, this can work too: http://blogs.bartdesmet.net/bart/archive/2004/12/08/494.aspx. The start screen of Windows has changed a little in SP2.

  8. Anonymous says:

    Matthew W. Jackson, how about calling GetVersionEx() and checking the szCSDVersion in the OSVERSIONINFO struct?

    See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getversionex.asp

    Alon

  9. Anonymous says:

    On a possibly related note, why is the final release of windows (seemingly) always build 2600?

  10. Anonymous says:

    Loz:

    "rtm" is Release To Manufacturing – in other words, that build was the one released in Service Pack 2.

    "gdr" is General Distribution Release. These are post-RTM hotfixes that have been made available for general distribution (i.e. are posted on Microsoft.com or Windows Update for anyone to download.) These tend to be security fixes or other high-visibility bug fixes.

    There’s a third category you didn’t point out, "qfe" for Quick Fix Engineering. These are post-RTM hotfixes which have not gone through the additional test pass necessary to qualify them to be posted for public download. These fixes may be obtained on an "as needed" basis by calling Microsoft support.

  11. Anonymous says:

    So, anyone have a reason why Service Pack 2 changed the startup screen so that you can’t see what model of Windows XP you are using?

  12. Anonymous says:

    Nevermind, it seems that wServicePackMinor and wServicePackMajor provide what I want…but these were mysteriously left out of the OperatingSystem class in .NET 2.0. I guess I should complain on ladybug…although it’s probably too late to get this fixed.

  13. Anonymous says:

    Matthew and Alon:

    Call GetVersionEx, passing a OSVERSIONINFOEX structure and checking the wServicePackMajor and wServicePackMinor values.

    As for the build number… 2600 is the build at which XP Gold was frozen; after that all fix builds come after the 2600 (e.g. 2180).

    At least that’s how I interpret it. Of course, the various IE components follow their own rules and keep updating the main build number, to 2900 in SP2’s case.

  14. Anonymous says:

    "On a possibly related note, why is the final release of windows (seemingly) always build 2600?"

    See alt.2600 for answers.

  15. Anonymous says:

    The OS build numbers are often special:

    Win 95 was build 950 (IIRC the number jumped from the mid-500s to 950 in June or July of 1995 when MS started making release candiate builds). The build you bought in stores was "950r6" – build 950 release candidate 6.

    Win 98 was build 1998

    Win 98SE was (I think) build 2222

  16. Anonymous says:

    "So, anyone have a reason why Service Pack 2 changed the startup screen so that you can’t see what model of Windows XP you are using?"

    That’s been puzzling me for a while, but my guess is that it’s to save having several versions of KERNEL.EXE to maintain. You can always download a custom one if it bothers you that much:

    http://bfarber.com/index.php?&dlcategory=8

  17. Anonymous says:

    I wish you could customize your startup logo with more animated bits and pieces… For example OS X 10 has a swirling thing which you simply can’t re-create with XP.

  18. Anonymous says:

    I remember I customized my Windows 95 startup animation back when I was using that OS… but that’s because I did a shutdown every night and a startup the next day. Now on XP, the only times I ever shut down is to restart after a security patch, and it displays for all of 10 seconds, so I don’t think its worth the time to bother hacking ntoskrnl.exe just for that. It’s definitely not worth MS’s time to make it customizable–they have more important things to worry about. :)

    Re: build numbers: The consumer Windows line has always had special version numbers as Mat said. However, NT’s always seemed to be "true", non-fudged build numbers. NT 3.51=1057, NT 4.0=1381, Win2K=2195. XP’s seemed to be artificially rounded up to 2600.

    However, there was a sudden jump for Windows Server 2003 into the mid 3000’s–probably at the time they decided to make it NT 5.2 (it was originally 5.1 just like XP). 2003 ended off at 3790.

    Longhorn seems to be another story as well. There were builds in the 3600s for Longhorn (e.g. 3683); it grew into the 4000s (or maybe it was jumped to the 4000s?). However, people are now saying that it’s been jumped to the 5000s. So who knows what the real method to the madness is.

  19. Anonymous says:

    I’ve actually delivered software version 1.2 before 1.1.

    That’s because 1.1 and 1.2 were defined by the PHBs early as a certain feature sets. Then, at the last minute they shuffled the feature sets due to whatever reasons PHBs have.

    Thus, 1.2 ships before 1.1.

  20. Anonymous says:

    http://support.microsoft.com/?id=824994 describes in a language that looks a bit like english what a GDR et al is.

  21. Anonymous says:

    Alon,

    Comparing a string seems fragile. "Magic strings" are just as bad as magic numbers.

    If Windows XP was 5.1.2600 and SP2 was 5.1.2900 then I would feel better. And what about Media Center or Starter Edition? Are the strings *exactly* the same, or do they differ?

    The string should be for presentational purposes only…to show a user what version he/she is running. For actually checking a version, something more concrete is needed.

    And it seems that OperatingSystem.ServicePack (the equivalent to OSVERSIONINFO.szCSDVersion) is only in .NET 2.0. What about .NET 1.1? How do we detect Service Pack 2 without P/Invoke? The version number and platform haven’t changed from XP to SP1 to SP2.

    Seems like the version number (5.1.2600) isn’t a *build* version number, but an informational product version number, which is just as usless as saying "Windows XP" or "SQL Server 2000". I don’t know why they even picked 5.1.2600. It might as well have been 5.1.0000 or 6.0.0000 or 2002.0000! (Well, in fairness, at least they’re in some sort of order–except for Home/Pro vs Server–that’s still weird).

  22. Anonymous says:

    Manip: Raymond Chen wrote about this some time ago, see here http://blogs.msdn.com/oldnewthing/archive/2003/08/05/54603.aspx

  23. Anonymous says:

    I know the feeling — because of project naming, all of our database schema is stored in a folder called "4.1", even though we’re well on our way to 7.0 now. ;)

  24. Anonymous says:

    Good article… but that just raises the

    question of why do Microsoft lock the boot

    logo? If they are worried about OEMs changing

    it on new systems they could easily make a

    standard boot logo part of the OEM agreement.

  25. Anonymous says:

    This concern of the changing boot logo is obviously a relatively new one at Microsoft. I have a Compaq with Windows ME installed, and they have a custom logo with the Compaq logo at the top above the Windows logo. Anyway, Windows 95 through ME and Windows NT 4 used a bitmap file for changing the boot screen.

    Anyway, over at the Mac side, I remember when OS X 10.2 first came out with the Happy Mac gone from bootup, there were hacks galore to bring it back. Likewise, I’m sure Apple did as much as they possibly could to prevent people from doing just that. (Apple holds an even tighter grip on its interface against shell enhancements than Microsoft does.)

  26. Anonymous says:

    Sterl: Windows NT 4 didn’t have any kind of fancy boot screen. It was a simple blue screen with a series of dots as drivers were initialized.

  27. Anonymous says:

    > Some support people have asked me why the "About" dialog seems to be kind of schizophrenic as to whether a machine <<

    Raymond, you’re smart enough to know that schizophrenia, contrary to urban myth and movie lore, does not involve multiple personalities. By using "schizophrenic" in this fashion, you are perpetuating this harmful myth.

    It is generally a good idea to refrain from using serious medical conditions as metaphors.

  28. Anonymous says:

    Yes, I know that schizophrenia is not "split personality"; I have relative who suffers from it. If you want to suggest another word please do.

  29. Anonymous says:

    "Some support people have asked me why the "About" dialog seems to be kind of […] as to whether a machine"

    uncertain

    unsure

    confused

    vague

    unhelpful

    misleading

    freaky

    guessing

    etc…

  30. Anonymous says:

    ambiguous, unclear, inconclusive, confusing, equivocal, mixed-up, vague, uncertain, split, iffy, cryptic, obscure

  31. Anonymous says:

    http://dictionary.reference.com/search?q=schizophrenic

    "2. Of, relating to, or characterized by the coexistence of disparate or antagonistic elements."

    I think in common with many words it now has multiple meanings. Raymond was quite correct in his use of the word.

  32. Anonymous says:

    How about just making up a word? After all, this gubblick contains many nonsklarkish English flutzpahs, but the overall pluggandisp can be glorked from context…

  33. Anonymous says:

    Fablorious idea.

  34. Anonymous says:

    Jebediah Springfield: "A noble spirit embiggens the smallest man."

    Mrs. Krabapple: "Funny, I’d never heard the word ’embiggen’ used before I came to Springfield."

    Second Teacher: "Don’t be ridiculous – it’s a perfectly cromulent word."

  35. Anonymous says:

    Slightly off-topic, but just to make sure people don’t end up with bad information about the Mozilla products, <a href="http://weblogs.mozillazine.org/asa/archives/007758.html">the copyright changes will be in the next release</a>, due out shortly.

  36. Anonymous says:

    I find this useful : Tweak ui can set this registry key to display the current build at the bottom right of the desktop

    http://www.winguides.com/registry/display.php/539/

Comments are closed.