我们可以通过注册表查找系统已安装的.NET Framework版本
.NET Framework版本号的注册表位置位于 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full
.NET Framework 版本 | 版本号最小值 |
---|---|
.NET Framework 4.5 | 378389 |
.NET Framework 4.5.1 | 378675 |
.NET Framework 4.5.2 | 379893 |
.NET Framework 4.6 | 393295 |
.NET Framework 4.6.1 | 394254 |
.NET Framework 4.6.2 | 394802 |
.NET Framework 4.7 | 460798 |
.NET Framework 4.7.1 | 461308 |
.NET Framework 4.7.2 | 461808 |
.NET Framework 4.8 | 528040 |
比如,如果值大于等于461308 并且 小于461808 ,那么版本就是4.7.1
打开.NET Framework项的注册表项。
using ( Microsoft.Win32.RegistryKey ndpKey = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey( Microsoft.Win32.RegistryHive.LocalMachine, "" ) .OpenSubKey( @"SOFTWARE\Microsoft\NET Framework Setup\NDP\" ) ) { // As an alternative, if you know the computers you will query are running .NET Framework 4.5 or later, you can use: // using ( Microsoft.Win32.RegistryKey ndpKey = // Microsoft.Win32.RegistryKey.OpenBaseKey( Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry32 ) // .OpenSubKey( @"SOFTWARE\Microsoft\NET Framework Setup\NDP\" ) ) foreach ( string versionKeyName in ndpKey.GetSubKeyNames( ) ) { if ( versionKeyName.StartsWith( "v" ) ) { Microsoft.Win32.RegistryKey versionKey = ndpKey.OpenSubKey( versionKeyName ); string name = (string) versionKey.GetValue( "Version", "" ); string sp = versionKey.GetValue( "SP", "" ).ToString( ); string install = versionKey.GetValue( "Install", "" ).ToString( ); if ( install == "" ) //no install info, must be later. { System.Console.WriteLine( versionKeyName + " " + name ); } else { if ( sp != "" && install == "1" ) { System.Console.WriteLine( versionKeyName + " " + name + " SP" + sp ); } } if ( name != "" ) { continue; } foreach ( string subKeyName in versionKey.GetSubKeyNames( ) ) { Microsoft.Win32.RegistryKey subKey = versionKey.OpenSubKey( subKeyName ); name = (string) subKey.GetValue( "Version", "" ); if ( name != "" ) { sp = subKey.GetValue( "SP", "" ).ToString( ); } install = subKey.GetValue( "Install", "" ).ToString( ); if ( install == "" ) //no install info, must be later. { System.Console.WriteLine( versionKeyName + " " + name ); } else { if ( sp != "" && install == "1" ) { System.Console.WriteLine( " " + subKeyName + " " + name + " SP" + sp ); } else if ( install == "1" ) { System.Console.WriteLine( " " + subKeyName + " " + name ); } } } } } }
查看已安装的.NET Framework版本的函数
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)) { if (ndpKey != null && ndpKey.GetValue("Release") != null) { Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int)ndpKey.GetValue("Release"))}"); } else { Console.WriteLine(".NET Framework Version 4.5 or later is not detected."); } } // Checking the version using >= enables forward compatibility. static string CheckFor45PlusVersion(int releaseKey) { if (releaseKey >= 528040) return "4.8 or later"; if (releaseKey >= 461808) return "4.7.2"; if (releaseKey >= 461308) return "4.7.1"; if (releaseKey >= 460798) return "4.7"; if (releaseKey >= 394802) return "4.6.2"; if (releaseKey >= 394254) return "4.6.1"; if (releaseKey >= 393295) return "4.6"; if (releaseKey >= 379893) return "4.5.2"; if (releaseKey >= 378675) return "4.5.1"; if (releaseKey >= 378389) return "4.5"; // This code should never execute. A non-null release key should mean // that 4.5 or later is installed. return "No 4.5 or later version detected"; }
还可以使用命令行查找
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802
日期:2020-04-11 22:50:24 来源:oir作者:oir