Confusion over whether you have Windows XP SP1 or SP2

Date:March 18, 2005 / year-entry #70
Orig Link:
Comments:    38
Summary: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...

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. Loz 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="">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. qsx 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. M says:

    GDR means "General Distribution Release".

  4. D. Philippe says:

    On the subject on service packs…

    …anyone remember this?

  5. Jason 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="">fix</a&gt; any time soon, either.

  6. Matthew W. Jackson 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. Bart De Smet says:

    Not programmatically, but using your own human eyes, this can work too: The start screen of Windows has changed a little in SP2.

  8. Alon Tal says:

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



  9. beuges says:

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

  10. Syz says:


    "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 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. Sterl 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. Matthew W. Jackson 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. Jonathan 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. Good Point says:

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

    See alt.2600 for answers.

  15. Mike Dunn 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. Mat Hall 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:

  17. Manip 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. Jonathan 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. 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. David Candy says: describes in a language that looks a bit like english what a GDR et al is.

  21. Matthew W. Jackson says:


    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. Chris 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. ;)

  23. Manip 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.

  24. Sterl 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.)

  25. Jonathan 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.

  26. Anon. 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.

  27. Raymond Chen 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.

  28. Mat Hall says:

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










  29. Anon. says:

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

  30. David Hall says:

    "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.

  31. Mat Hall 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…

  32. michaels says:

    Fablorious idea.

  33. A Simpsons Quote for every occasion 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."

  34. Paul says:

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

  35. luceric says:

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

Comments are closed.

*DISCLAIMER: I DO NOT OWN THIS CONTENT. If you are the owner and would like it removed, please contact me. The content herein is an archived reproduction of entries from Raymond Chen's "Old New Thing" Blog (most recent link is here). It may have slight formatting modifications for consistency and to improve readability.

WHY DID I DUPLICATE THIS CONTENT HERE? Let me first say this site has never had anything to sell and has never shown ads of any kind. I have nothing monetarily to gain by duplicating content here. Because I had made my own local copy of this content throughout the years, for ease of using tools like grep, I decided to put it online after I discovered some of the original content previously and publicly available, had disappeared approximately early to mid 2019. At the same time, I present the content in an easily accessible theme-agnostic way.

The information provided by Raymond's blog is, for all practical purposes, more authoritative on Windows Development than Microsoft's own MSDN documentation and should be considered supplemental reading to that documentation. The wealth of missing details provided by this blog that Microsoft could not or did not document about Windows over the years is vital enough, many would agree an online "backup" of these details is a necessary endeavor. Specifics include:

<-- Back to Old New Thing Archive Index