How to detect what .NET Framework 1.0 service pack is installed

I posted information here earlier today about how to detect which service pack is installed for the .NET Framework 1.1 (and will also be able to be used for future versions of the .NET Framework). Since then I've done some additional research to figure out what registry key/value pair can be used to detect the service pack level for the .NET Framework 1.0 so that the instructions on this KB article will not need to be used (since it is more difficult to perform programatically and the detection has to be updated with each future service pack that Microsoft releases). Here are the registry keys/values that can be used:

For the MSI version of the .NET Framework 1.0:

  • Key Name: HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}
  • Value: Version
  • Data type: REG_SZ

For the OCM version of the .NET Framework 1.0 (ships on Tablet PC, Media Center and XP Embedded only):

  • Key Name: HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}
  • Value: Version
  • Data type: REG_SZ

For both of the above registry values, the data will be of the form 1,0,3705,x. The "x" in this data represents the service pack level. If you retrieve the registry value data and then parse off the number after the last comma, that will give you the SP level for the .NET Framework 1.0.

I'm going to try find time tonight or tomorrow to create a code snippet that will show how to detect whether or not the .NET Framework 1.0 or 1.1 is installed, and if so, which SP (if any) is installed. Stay tuned.....