public static void Main()
GetVersionFromRegistry();
private static void GetVersionFromRegistry()
using (RegistryKey ndpKey =
RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "").
OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
foreach (string versionKeyName in ndpKey.GetSubKeyNames())
if (versionKeyName.StartsWith("v"))
RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
string name = (string)versionKey.GetValue("Version", "");
string sp = versionKey.GetValue("SP", "").ToString();
string install = versionKey.GetValue("Install", "").ToString();
Console.WriteLine(versionKeyName + " " + name);
if (sp != "" && install == "1")
Console.WriteLine(versionKeyName + " " + name + " SP" + sp);
foreach (string subKeyName in versionKey.GetSubKeyNames())
RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
name = (string)subKey.GetValue("Version", "");
sp = subKey.GetValue("SP", "").ToString();
install = subKey.GetValue("Install", "").ToString();
Console.WriteLine(versionKeyName + " " + name);
if (sp != "" && install == "1")
Console.WriteLine(" " + subKeyName + " " + name + " SP" + sp);
Console.WriteLine(" " + subKeyName + " " + name);