title: How do I detect what .NET Framework versions and service packs are installed?
body: <p>A similar question was asked <a href="https://stackoverflow.com/questions/198931/how-do-i-tell-if-net-35-sp1-is-installed">here</a>, but it was specific to .NET 3.5. Specifically, I'm looking for the following:</p>
  
  <ol>
  <li>What is the correct way to determine which .NET Framework versions and service packs are installed?</li>
  <li>Is there a list of registry keys that can be used?</li>
  <li>Are there any dependencies between Framework versions?</li>
  </ol>