1 /// 2 /// 检测计算机已经安装的NetFramework版本 3 /// 4 internal void GetVersionFromRegistry() 5 { 6 using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 7 RegistryView.Registry32).OpenSubKey(@"SOFTWAREMicrosoftNET Framework SetupNDP")) 8 { 9 foreach (string versionKeyName in ndpKey.GetSubKeyNames()) 10 { 11 if (versionKeyName.StartsWith("v")) 12 { 13 RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName); 14 string name = (string)versionKey.GetValue("Version", ""); 15 string sp = versionKey.GetValue("SP", "").ToString(); 16 string install = versionKey.GetValue("Install", "").ToString(); 17 if (install == "") //no install info, ust be later 18 Console.WriteLine(versionKeyName + " " + name); 19 else 20 { 21 if (sp != "" && install == "1") 22 { 23 Console.WriteLine(versionKeyName + " " + name + " SP" + sp); 24 } 25 } 26 if (name != "") 27 { 28 continue; 29 } 30 foreach (string subKeyName in versionKey.GetSubKeyNames()) 31 { 32 RegistryKey subKey = versionKey.OpenSubKey(subKeyName); 33 name = (string)subKey.GetValue("Version", ""); 34 if (name != "") 35 sp = subKey.GetValue("SP", "").ToString(); 36 install = subKey.GetValue("Install", "").ToString(); 37 if (install == "") //no install info, ust be later 38 Console.WriteLine(versionKeyName + " " + name); 39 else 40 { 41 if (sp != "" && install == "1") 42 { 43 Console.WriteLine(" " + subKeyName + " " + name + " SP" + sp); 44 } 45 else if (install == "1") 46 { 47 Console.WriteLine(" " + subKeyName + " " + name); 48 } 49 } 50 } 51 } 52 } 53 } 54 }