1 void Main() 2 { 3 GetFWVersion().Dump(); 4 } 5 6 static Version _version; 7 public static Version GetFWVersion () 8 { 9 if (_version != null) return _version; 10 11 if (typeof (int).GetType ().BaseType.Name == "Type") return _version = new Version (4, 0); 12 13 using (var key = Registry.LocalMachine.OpenSubKey (@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full")) 14 { 15 int? versionKey = key == null ? null : key.GetValue ("Release") as int?; 16 if (versionKey >= 461808) return _version = new Version (4, 7, 2); 17 if (versionKey >= 461308) return _version = new Version (4, 7, 1); 18 if (versionKey >= 460798) return _version = new Version (4, 7); 19 if (versionKey >= 394802) return _version = new Version (4, 6, 2); 20 if (versionKey >= 394254) return _version = new Version (4, 6, 1); 21 if (versionKey >= 393273) return _version = new Version (4, 6); 22 if (versionKey >= 379893) return _version = new Version (4, 5, 2); 23 if (versionKey >= 378675) return _version = new Version (4, 5, 1); 24 } 25 return _version = new Version (4, 5); 26 }