I am planning to get rid of the SHA1 certificate signing algorithm in our certificates and switch over to SHA-256. Problem is, that Windows XP (before SP3) is not supporting this. Therefore I need to know how many people are still using these versions. Is there a way to seperate Windows XP SP1 and SP2 from SP3? I know that SP2 brought the "SV1" (Security Version 1) token to it's version string, but what about SP1 and SP3? Is there a way to distinguish these versions?
This MSDN article documents the nomenclature used for user agents. Appears the feature token can be used in conjunction with the platform token to make some determinations.
Certain optional components can also modify the user-agent string; this next table shows common ones. Be aware that many other applications also modify the user-agent string. Because of this, a comprehensive list is not possible. If you find additional tokens in your user-agent string, investigate them in more detail.
The table specifically notes SV1 as a signal for a specific service pack.
However, the document explicitly states that a comprehensive list is not available.
UserAgentString.com collects User-Agent strings but I do not see any correlation to SP versions.
I have not been able to find an official Microsoft reference for what feature tokens were added to the various service packs. But I do know this appears on their blog from time to time:
Perhaps with some digging you can find the others.
If this is possible, I think your only option is to dig into .NET CLR version history. I believe the different Service Packs could have been served different .NET CLR versions. Unfortunately the user agents doesn't show the last digits (1.1.4322.????).
If one can install any .NET CLR version on any Windows XP version. Then the answer is no. You can not tell Service Pack version from the User Agent string.