如何查看并确定已安装的.NETFramework 版本
⽤户可在他们的计算机上和运⾏ .NET Framework 的多个版本。 当你开发或部署应⽤时,你可能需要知道⽤户的计算机上安装了哪些 .NET Framework 版本。.NET Framework 由两个采⽤不同版本的主要组件构成:
⼀组程序集,它们是为应⽤提供功能的类型与资源的集合。 .NET Framework 和程序集使⽤相同的版本号。
公共语⾔运⾏时 (CLR),可管理并执⾏应⽤的代码。 CLR 由其⾃⼰的版本号标识(请参阅)。
若要获取计算机上安装的 .NET Framework 版本列表,请访问注册表。 可使⽤注册表编辑器查看注册表或使⽤代码进⾏查询:
查较新的 .NET Framework 版本(4.5 及更⾼版本):
查较旧的 .NET Framework 版本 (1–4):
若要获取计算机上安装的 CLR 版本列表,请使⽤⼯具或代码:
有关检测安装的每个 .NET Framework 版本的更新的信息,请参阅。
查较新的 .NET Framework 版本(4.5
及更⾼版本)
在注册表中查
.NET Framework 4.5 及更⾼版本
1. 在“开始”菜单中,选择“运⾏”,输⼊ regedit ,然后选择“确定” 。
必须具有管理凭据才能运⾏ regedit 。
2. 在注册表编辑器中,打开以下⼦项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full . 如果“完整”⼦项不存在,则表⽰尚未安装 .NET Framework 4.5 或更⾼版本 。
3. 请检查名为“Release”的 DWORD 条⽬ 。 如果存在,则安装 .NET Framework
4.5 或更⾼版本。 其值是对应于特定版本的 .NET Framework 的版本密钥。 以下图为例,“Release”
条⽬的值为 378389,这是 .NET Framework 4.5 的版本密钥 。
下表列出了 .NET Framework 4.5 及更⾼版本的独⽴操作系统的 Release DWORD 的值。
备注
每个新版本的 .NET Framework 都会保留早期版本中的功能并会添加新功能。 可在同⼀台计算机上同时加载多个版本的 .NET
Framework ,这意味着可安装 .NET Framework ⽽⽆需卸载以前的版本。 通常,你不应卸载以前版本的 .NET Framework ,因为你使⽤的应⽤程序可能依赖于特定版本,如果删除该版本,可能会中断。
.NET Framework 版本和 CLR 版本之间存在差异:
.NET Framework 版本基于构成 .Net Framework 类库的⼀组程序集。 例如,.NET Framework 版本包括 4.5、4.6.1 和 4.7.2。CLR 版本基于 .NET Framework 应⽤程序执⾏的运⾏时。 单个 CLR 版本通常可⽀持多个 .NET Framework 版本。 例如,CLR 版本 4. ⽀持 .NET Framework 版本 4 到 4.5.2(其中 xxxxx ⼩于 42000),⽽ CLR 版本 4.0.30319.42000 ⽀持从.NET Framework 4.6 开始的 .NET Framework 版本。
有关版本的详细信息,请参见 。
备注
注册表中的“.NET Framework 安装程序” ⽂件夹不以句点开头 。
重要
.NET Framework 版本Release DWORD 的值
.NET Framework 4.5所有 Windows 操作系统:378389
.NET Framework 4.5.1在 Windows 8.1 和 Windows Server 2012 R2 上:378675
在所有其他 Windows 操作系统上:378758
.NET Framework 4.5.2所有 Windows 操作系统:379893
.NET Framework 4.6在 Windows 10 上:393295
在所有其他 Windows 操作系统上:393297
.NET Framework 4.6.1在 Windows 10 11 ⽉更新系统上:394254
在所有其他 Windows 操作系统(包括 Windows 10)上:394271
.NET Framework 4.6.2在 Windows 10 周年更新和 Windows Server 2016 上:394802
在所有其他 Windows 操作系统(包括其他 Windows 10 操作系统)上:
394806
.NET Framework 4.7在 Windows 10 创意者更新上:460798
在所有其他 Windows 操作系统(包括其他 Windows 10 操作系统)上:
460805
.NET Framework 4.7.1在 Windows 10 Fall Creators Update 和 Windows Server 版本 1709
上:461308
在所有其他 Windows 操作系统(包括其他 Windows 10 操作系统)上:
461310
.NET Framework 4.7.2在 Windows 10 2018 年 4 ⽉更新和 Windows Server 版本 1803 上:
461808
在除 Windows 10 2018 年 4 ⽉更新和 Windows Server 版本 1803 之外
的所有 Windows 操作系统上:461814
.NET Framework 4.8在 Windows 10 2019 年 5 ⽉更新上:528040
在所有其他 Windows 操作系统(包括其他 Windows 10 操作系统)上:
528049
可以使⽤这些值,如下所⽰:
若要确定具体的 Windows 操作系统版本上是否安装了特定版本的 .NET Framework,请测试 Release D
WORD 值是否等于表中列出的值。例如,若要确定 Windows 10 系统上是否安装了 .NET Framework 4.6,请测试 Release 值是否等于 393295 。
若要确定是否安装了最低版本的 .NET Framework,请对该版本使⽤较⼩的 RELEASE DWORD 值。例如,如果应⽤程序在 .NET Framework 4.6 或更⾼版本下运⾏,请测试RELEASE DWORD 值是否⼤于或等于 393295 。若要查看仅列出每个 .NET Framework 版本的最⼩ RELEASE DWORD 值的表,请参阅。
若要测试多个版本,请先测试值是否⼤于或等于最新 .NET Framework 版本的较⼩ DWORD 值,然后将该值与每个连续较旧版本的较⼩ DWORD 值进⾏⽐较。例如,如果应⽤程序需要 .NET Framework 4.7 或更⾼版本,且你希望确定是否安装了特定版本的 .NET Framework,请先测试 RELEASE DWORD 值是否⼤于或等于 461808 (.NET Framework
4.7.2 的较⼩ DWORD 值)。然后,将 RELEASE DWORD 值与每个更新版本的 .NET Framework 的较⼩值进⾏⽐较。若要查看仅列出每个 .NET Framework 版本的最⼩
RELEASE DWORD 值的表,请参阅。
使⽤代码查 .NET Framework 4.5
及更⾼版本
1. 使⽤和⽅法访问 Windows 注册表中的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”⼦项。
“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”⼦项中存在“Release”DWORD 条⽬表⽰已在电脑上安装 .NET Framework 4.5 或更⾼版本。
2. 检查“Release”条⽬的值以确定安装的版本。为了向前兼容,可检查是否有⼀个值⼤于或等于中所列的值。
下例检查注册表中“Release”条⽬的值,以查已安装的 .NET Framework 4.5 及更⾼版本:
C#复制
下表仅列出了 .NET Framework 已发布版本的密钥。它并没有列出预览版或预发布版本的密钥。
using System;
using Microsoft.Win32;
此⽰例遵循版本检查的建议做法:
检查“Release”条⽬的值是否⼤于或等于已知版本密钥的值 。
按从最新版本到最早版本的顺序检查。
使⽤ PowerShell 检查所需的 .NET Framework 的最低版本(4.5
或更⾼版本)
使⽤ PowerShell 命令检查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”⼦项的“Release”条⽬的值 。
以下⽰例检查“Release”条⽬的值,以确定是否已安装 .NET Framework 4.6.2 或更⾼版本 。 如果安装了此代码,则返回 True ,否则返回 False 。
PowerShell 复制
PowerShell
复制
若要检查不同的所需最低 .NET Framework 版本,请使⽤ 中的“Release”值替换这些⽰例中的 394802 。public class GetDotNetVersion
{
publicstaticvoidMain(){
Get45PlusFromRegistry();
}
privatestaticvoidGet45PlusFromRegistry(){server 2012 r2 密钥
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.
stringCheckFor45PlusVersion(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";
}
}
}
// This example displays output like the following:
// .NET Framework Version: 4.6.1
# PowerShell 5 Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' | Get-ItemPropertyValue -Name Release | Foreach-Object { $_ -ge 394802 }# PowerShell 4(Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802
查较旧的 .NET Framework 版本
在注册表中查 .NET Framework 版本
1. 在“开始”菜单中,选择“运⾏”,输⼊ regedit ,然后选择“确定” 。
必须具有管理凭据才能运⾏ regedit 。
2. 在注册表编辑器中,打开以下⼦项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP :
对于 .NET Framework 1.1 到 3.5 版,每个安装的版本都在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP”⼦项下列为⼦项 。 例如,“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5” 。 版本号存储为版本⼦项的“Version”条⽬中的值 。对于 .NET Framework 4,“Version”条⽬位于“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework
Setup\NDP\v4.0\Client”或“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full”⼦项下,或同时位于这两个⼦项下 。下图显⽰了 .NET Framework 3.5 的⼦项及其“Version”条⽬
。
使⽤代码查 .NET Framework 版本
使⽤ 类访问 Windows 注册表中的“HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP”⼦项 。
以下⽰例查已安装的 .NET Framework 1-4 1–4:C#复制
备注
注册表中的“.NET Framework 安装程序”⽂件夹不以句点开头 。
using Microsoft.Win32;
using System;
public static class VersionTest
{
publicstaticvoidMain(){
GetVersionFromRegistry();
}
privatestaticvoidGetVersionFromRegistry(){
// Opens the registry key for the .NET Framework entry.
using (RegistryKey ndpKey =
RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
{
foreach (var versionKeyName in ndpKey.GetSubKeyNames())
{
// Skip .NET Framework 4.5 version information.
if (versionKeyName == "v4")
{
continue;
}
if (versionKeyName.StartsWith("v"))
{
RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
// Get the .NET Framework version value.
var name = (string)versionKey.GetValue("Version", "");
// Get the service pack (SP) number.
var sp = versionKey.GetValue("SP", "").ToString();
/
/ Get the installation flag, or an empty string if there is none.
var install = versionKey.GetValue("Install", "").ToString();
if (string.IsNullOrEmpty(install)) // No install info; it must be in a child subkey.
Console.WriteLine($"{versionKeyName}{name}");
else
{
查 CLR
版本
使⽤ 查当前的 CLR
使⽤ 确定计算机上安装了哪些版本的 CLR :
从 ,输⼊ clrver 。⽰例输出:
console 复制
使⽤ Environment 类查当前的 CLR
1. 查询 属性以检索 对象。
返回的 System.Version 对象标识当前正在执⾏代码的运⾏时版本。 它不返回计算机上可能已安装的程序集版本或运⾏时的其他版本。 if (!(string.IsNullOrEmpty(sp)) && install == "1")
{
Console.WriteLine($"{versionKeyName}{name} SP{sp}");
}
}
if (! string.IsNullOrEmpty(name))
{
continue;
}
foreach (var subKeyName in versionKey.GetSubKeyNames())
{
RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
name = (string)subKey.GetValue("Version", "");
if (! string.IsNullOrEmpty(name))
sp = subKey.GetValue("SP", "").ToString();
install = subKey.GetValue("Install", "").ToString();
if (string.IsNullOrEmpty(install)) //No install info; it must be later.
Console.WriteLine($"{versionKeyName}{name}");
else
{
if (!(string.IsNullOrEmpty(sp )) && install == "1")
{
Console.WriteLine($"{subKeyName}{name} SP{sp}");
}
else if (install == "1")
{
Console.WriteLine($" {subKeyName}{name}");
}
}
}
}
}
}
}
}
// The example displays output similar to the following:
// v2.0.50727 2.0.50727.4927 SP2
// v3.0 3.0.30729.4926 SP2
/
/ v3.5 3.5.30729.4926 SP1
// v4.0
// Client 4.0.0.0
Versions installed on the machine:
v2.0.50727
v4.0.30319
重要
对于 .NET Framework 4.5 及更⾼版本,请勿使⽤ 属性来检测 CLR 的版本。 ⽽应按照中所述查询注册表。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论