I maintain a script in our test harness that autodetects and reports back the OS version of the machine under test.  I couldn't tell if I was running XP SP1 or XP SP2 - so I had a kludge that used spcheck from the reskit.  But the real problem was that I was getting most info using ver from the cmd shell but on Windows 2000 couldn't tell the difference between Professional and Server.  I was able to find all this info in the registry so I ripped out the hacks and now I'm just reading from there.  If anyone else out there is trying to do the same thing, here's where I get the information from (all are in HKLM):

SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName
(Microsoft Windows Server 2003, Microsoft Windows XP, Microsoft Windows 2000)

SOFTWARE\Microsoft\Windows NT\CurrentVersion\CDSVersion
(Service Pack 1, Service Pack 2, ...)

And to distinguish between Pro and Server on Windows 2000: SYSTEM\CurrentControlSet\Control\ProductOptions\ProductType
(WinNT, ServerNT)

I didn't actually use it in my case but if you're looking for more of a prepackaged tool to do this type of thing, DtWinVer at http://www.codeproject.com/system/dtwinver.asp also looks promising.