Windows tracks which Service Pack level has been installed on a given computer through a Registry entry. The Service Pack level is simply a number that indicates which, if any, Service Pack has been installed on that particular computer. In applications and through programmatic interfaces, the Service Pack level is referred to as the CSDVersion property, and is part of the number string that describes the version of the current installation of Windows: major revision (5 for both Windows 2000 and XP), minor revision (1 for XP, 0 for Win2K), build number (2600 for XP, 2195 for Win2K), and service pack number.
If a Service Pack is not installed correctly, or another program makes incorrect assumptions (or is misled) about the current Service Pack number, then the Service Pack revision level reference might be damaged. This in turn can cause hotfixes and security patches to not install correctly.
To manually reset the Service Pack level, open the Registry and navigate to the key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows. Add or edit a DWORD value named CSDVersion and set it to 0 (hex or decimal). Reboot the computer and then go to Windows Update to re-apply the most recent Service Pack and hotfixes.
Note that changing the Service Pack level in this fashion does not automatically cause references to Service Packs or hotfixes to be removed from the Add/Remove Programs menu. These should be left as-is to prevent conflicts with other system components; removing them and then changing the Service Pack revision level may do more harm than good.
Serdar Yegulalp is the editor of the Windows 2000 Power Users Newsletter. Check out his Windows 2000 blog for his latest advice and musings on the world of Windows network administrators – please share your thoughts as well!
This was first published in June 2004