如何:确定已安装的 .NET Framework 版本
用户可在他们的计算机上安装和运行 .NET Framework 的多个版本。 当你开发或部署应用时,你可能需要知道用户的计算机上安装了哪些 .NET Framework 版本。
.NET Framework 由两个采用不同版本的主要组件构成:
一组程序集,它们是为应用提供功能的类型与资源的集合。 .NET Framework 和程序集使用相同的版本号。
公共语言运行时 (CLR),可管理并执行应用的代码。 CLR 由其自己的版本号标识(请参阅版本和依赖关系)。
备注
每个新版本的 .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.0.30319.xxxxx 支持 .NET Framework 版本 4 到 4.5.2(其中 xxxxx 小于 42000),而 CLR 版本 4.0.30319.42000 支持从 .NET Framework 4.6 开始的 .NET Framework 版本。
有关版本的详细信息,请参见 .NET Framework 版本和依赖关系。
若要获取计算机上安装的 .NET Framework 版本列表,请访问注册表。 可使用注册表编辑器查看注册表或使用代码进行查询:
- 查找较新的 .NET Framework 版本(4.5 及更高版本):
- 查找较旧的 .NET Framework 版本 (1–4):
若要获取计算机上安装的 CLR 版本列表,请使用工具或代码:
有关检测安装的每个 .NET Framework 版本的更新的信息,请参阅如何:确定已安装的 .NET Framework 更新。
查找较新的 .NET Framework 版本(4.5 及更高版本)
在注册表中查找 .NET Framework 4.5 及更高版本
在“开始”菜单中,选择“运行”,输入 regedit,然后选择“确定” 。
必须具有管理凭据才能运行 regedit。
在注册表编辑器中,打开以下子项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. 如果“完整”子项不存在,则表示尚未安装 .NET Framework 4.5 或更高版本 。
备注
注册表中的“.NET Framework 安装程序” 文件夹不以句点开头 。
请检查名为“Release”的 DWORD 条目 。 如果存在,则安装 .NET Framework 4.5 或更高版本。 其值是对应于特定版本的 .NET Framework 的版本密钥。 以下图为例,“Release”条目的值为 378389,这是 .NET Framework 4.5 的版本密钥 。

下表列出了 .NET Framework 4.5 及更高版本的独立操作系统的 Release DWORD 的值。
重要
下表仅列出了 .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 DWORD 值是否等于 表中列出的值。 例如,若要确定 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 4.5 及更高版本的最小 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 及更高版本的最小 Release DWORD 值。
使用代码查找 .NET Framework 4.5 及更高版本
使用 RegistryKey.OpenBaseKey 和 RegistryKey.OpenSubKey 方法访问 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 或更高版本 。
检查“Release”条目的值以确定安装的版本 。 为了向前兼容,可检查是否有一个值大于或等于 .NET Framework 版本表中所列的值。
下例检查注册表中“Release”条目的值,以查找已安装的 .NET Framework 4.5 及更高版本 :
using System;
using Microsoft.Win32;
public class GetDotNetVersion
{
public static void Main()
{
Get45PlusFromRegistry();
}
private static void Get45PlusFromRegistry()
{
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.
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";
}
}
}
// This example displays output like the following:
// .NET Framework Version: 4.6.1
此示例遵循版本检查的建议做法:
检查“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 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 版本表中的“Release”值替换这些示例中的 394802 。
查找较旧的 .NET Framework 版本 1–4
在注册表中查找 .NET Framework 版本 1–4
在“开始”菜单中,选择“运行”,输入 regedit,然后选择“确定” 。
必须具有管理凭据才能运行 regedit。
在注册表编辑器中,打开以下子项: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 安装程序”文件夹不以句点开头 。
下图显示了 .NET Framework 3.5 的子项及其“Version”条目 。

使用代码查找 .NET Framework 版本 1–4
- 使用 Microsoft.Win32.RegistryKey 类访问 Windows 注册表中的“HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP”子项 。
以下示例查找已安装的 .NET Framework 1-4 1–4:
using Microsoft.Win32;
using System;
public static class VersionTest
{
public static void Main()
{
GetVersionFromRegistry();
}
private static void GetVersionFromRegistry()
{
// 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
{
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
查找 CLR 版本
使用 Clrver.exe 查找当前的 CLR 版本
使用 CLR 版本工具 (Clrver.exe) 确定计算机上安装了哪些版本的 CLR:
从 Visual Studio 的开发人员命令提示,输入
clrver。示例输出:
console复制Versions installed on the machine:
v2.0.50727
v4.0.30319
使用 Environment 类查找当前的 CLR 版本
重要
对于 .NET Framework 4.5 及更高版本,请勿使用 Environment.Version 属性来检测 CLR 的版本。 而应按照使用代码查找 .NET Framework 4.5 及更高版本中所述查询注册表。
查询 Environment.Version 属性以检索 Version 对象。
返回的
System.Version对象标识当前正在执行代码的运行时版本。 它不返回计算机上可能已安装的程序集版本或运行时的其他版本。对于 .NET Framework 版本 4、4.5、4.5.1 和 4.5.2,返回的 Version 对象的字符串表示形式为 4.0.30319. xxxxx(其中 xxxxx 小于 42000)。 对于 .NET Framework 4.6 及更高版本,它的格式为 4.0.30319.42000。
获得
Version对象后,按如下方式查询:对于主要版本标识符(例如,4 表示版本 4.0),请使用 Version.Major 属性 。
对于次要版本标识符(例如,0 表示版本 4.0),请使用 Version.Minor 属性
对于整个版本字符串(例如,4.0.30319.18010),请使用 Version.ToString 方法 。此方法返回一个值,该值反映正在执行代码的运行时的版本。 它不返回可能安装在计算机上的程序集版本或其他运行时版本。
以下示例使用 Environment.Version 属性检索 CLR 版本信息:
using System;
public class VersionTest
{
public static void Main()
{
Console.WriteLine($"Version: {Environment.Version}");
}
}
// The example displays output similar to the following:'
// Version: 4.0.30319.18010
来源:https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed
用户可在他们的计算机上安装和运行 .NET Framework 的多个版本。 当你开发或部署应用时,你可能需要知道用户的计算机上安装了哪些 .NET Framework 版本。
.NET Framework 由两个采用不同版本的主要组件构成:
一组程序集,它们是为应用提供功能的类型与资源的集合。 .NET Framework 和程序集使用相同的版本号。
公共语言运行时 (CLR),可管理并执行应用的代码。 CLR 由其自己的版本号标识(请参阅版本和依赖关系)。
备注
每个新版本的 .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.0.30319.xxxxx 支持 .NET Framework 版本 4 到 4.5.2(其中 xxxxx 小于 42000),而 CLR 版本 4.0.30319.42000 支持从 .NET Framework 4.6 开始的 .NET Framework 版本。
有关版本的详细信息,请参见 .NET Framework 版本和依赖关系。
若要获取计算机上安装的 .NET Framework 版本列表,请访问注册表。 可使用注册表编辑器查看注册表或使用代码进行查询:
- 查找较新的 .NET Framework 版本(4.5 及更高版本):
- 查找较旧的 .NET Framework 版本 (1–4):
若要获取计算机上安装的 CLR 版本列表,请使用工具或代码:
有关检测安装的每个 .NET Framework 版本的更新的信息,请参阅如何:确定已安装的 .NET Framework 更新。
查找较新的 .NET Framework 版本(4.5 及更高版本)
在注册表中查找 .NET Framework 4.5 及更高版本
在“开始”菜单中,选择“运行”,输入 regedit,然后选择“确定” 。
必须具有管理凭据才能运行 regedit。
在注册表编辑器中,打开以下子项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. 如果“完整”子项不存在,则表示尚未安装 .NET Framework 4.5 或更高版本 。
备注
注册表中的“.NET Framework 安装程序” 文件夹不以句点开头 。
请检查名为“Release”的 DWORD 条目 。 如果存在,则安装 .NET Framework 4.5 或更高版本。 其值是对应于特定版本的 .NET Framework 的版本密钥。 以下图为例,“Release”条目的值为 378389,这是 .NET Framework 4.5 的版本密钥 。

下表列出了 .NET Framework 4.5 及更高版本的独立操作系统的 Release DWORD 的值。
重要
下表仅列出了 .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 DWORD 值是否等于 表中列出的值。 例如,若要确定 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 4.5 及更高版本的最小 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 及更高版本的最小 Release DWORD 值。
使用代码查找 .NET Framework 4.5 及更高版本
使用 RegistryKey.OpenBaseKey 和 RegistryKey.OpenSubKey 方法访问 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 或更高版本 。
检查“Release”条目的值以确定安装的版本 。 为了向前兼容,可检查是否有一个值大于或等于 .NET Framework 版本表中所列的值。
下例检查注册表中“Release”条目的值,以查找已安装的 .NET Framework 4.5 及更高版本 :
using System;
using Microsoft.Win32;
public class GetDotNetVersion
{
public static void Main()
{
Get45PlusFromRegistry();
}
private static void Get45PlusFromRegistry()
{
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.
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";
}
}
}
// This example displays output like the following:
// .NET Framework Version: 4.6.1
此示例遵循版本检查的建议做法:
检查“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 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 版本表中的“Release”值替换这些示例中的 394802 。
查找较旧的 .NET Framework 版本 1–4
在注册表中查找 .NET Framework 版本 1–4
在“开始”菜单中,选择“运行”,输入 regedit,然后选择“确定” 。
必须具有管理凭据才能运行 regedit。
在注册表编辑器中,打开以下子项: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 安装程序”文件夹不以句点开头 。
下图显示了 .NET Framework 3.5 的子项及其“Version”条目 。

使用代码查找 .NET Framework 版本 1–4
- 使用 Microsoft.Win32.RegistryKey 类访问 Windows 注册表中的“HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP”子项 。
以下示例查找已安装的 .NET Framework 1-4 1–4:
using Microsoft.Win32;
using System;
public static class VersionTest
{
public static void Main()
{
GetVersionFromRegistry();
}
private static void GetVersionFromRegistry()
{
// 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
{
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
查找 CLR 版本
使用 Clrver.exe 查找当前的 CLR 版本
使用 CLR 版本工具 (Clrver.exe) 确定计算机上安装了哪些版本的 CLR:
从 Visual Studio 的开发人员命令提示,输入
clrver。示例输出:
console复制Versions installed on the machine:
v2.0.50727
v4.0.30319
使用 Environment 类查找当前的 CLR 版本
重要
对于 .NET Framework 4.5 及更高版本,请勿使用 Environment.Version 属性来检测 CLR 的版本。 而应按照使用代码查找 .NET Framework 4.5 及更高版本中所述查询注册表。
查询 Environment.Version 属性以检索 Version 对象。
返回的
System.Version对象标识当前正在执行代码的运行时版本。 它不返回计算机上可能已安装的程序集版本或运行时的其他版本。对于 .NET Framework 版本 4、4.5、4.5.1 和 4.5.2,返回的 Version 对象的字符串表示形式为 4.0.30319. xxxxx(其中 xxxxx 小于 42000)。 对于 .NET Framework 4.6 及更高版本,它的格式为 4.0.30319.42000。
获得
Version对象后,按如下方式查询:对于主要版本标识符(例如,4 表示版本 4.0),请使用 Version.Major 属性 。
对于次要版本标识符(例如,0 表示版本 4.0),请使用 Version.Minor 属性
对于整个版本字符串(例如,4.0.30319.18010),请使用 Version.ToString 方法 。此方法返回一个值,该值反映正在执行代码的运行时的版本。 它不返回可能安装在计算机上的程序集版本或其他运行时版本。
以下示例使用 Environment.Version 属性检索 CLR 版本信息:
using System;
public class VersionTest
{
public static void Main()
{
Console.WriteLine($"Version: {Environment.Version}");
}
}
// The example displays output similar to the following:'
// Version: 4.0.30319.18010
请参阅
如何:确定已安装的 .NET Framework 版本的更多相关文章
- Inno Setup 检测已安装的.NET Framework 版本
翻译自:http://kynosarges.org/DotNetVersion.html 由 Jordan Russell 写的 Inno Setup 是一个伟大的安装脚本程序,但缺乏一个内置的函数来 ...
- c#获取已安装的所有NET版本
/// <summary> /// 获取已安装的所有NET版本 /// </summary> /// <returns></returns> publi ...
- Windows查看电脑上安装的.Net Framework版本的五种方法(转)
1.查看安装文件判断Framwork版本号 打开资源管理器,比如我的电脑,再地址栏输入%systemroot%\Microsoft.NET\Framework后单击“转到”或者按回车. 在新文件夹中查 ...
- C# 查看本机安装的NET Framework 版本
https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/how-to-determine-which-versions-ar ...
- 如何查看本机上安装的.NET Framework版本
在开始菜单选择"运行", 或者快捷键 “windows键+R” 在命令窗口输入regedit.exe,打开注册表 在注册表中定位到如下节点 HKEY_LOCAL_MACHINE\S ...
- 安装corel x8提示你已安装了另外一个版本
如果之前安装了其他版本,提示安装不进去,需卸载visual c++ 2015 redistributable(x64)即可(测试环境是安装了x6后,x8安装不了) windows install cl ...
- 检测电脑安装的net framework版本
https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx To find .NET Framework versions by ...
- C# winform 检测当前电脑安装的.net framework版本
private static bool GetDotNetRelease(int release) { const string subkey = @"SOFTWARE\Microsoft\ ...
- NET Framework 版本和依赖关系
原文:https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/versions-and-dependencies 每个版本的 ...
随机推荐
- 算法习题---5.1大理石在哪(UVa10474)
一:题目 现有N个大理石,每个大理石上写了一个非负整数.首先把各数从小到大排序,然后回答Q个问题.每个问题问是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上写着x.排序后的大理石从左到右编 ...
- 一种计算hash的思路
/*** * 转换请求hash,根据转换模式计算hash,防止重复发送请求,浪费服务器资源(内存.cpu.文件系统等) * @param mode * @param data * @return */ ...
- 有哪些可能的原因导致BDE死掉啊啊,求救了,谢谢
一个服务程序在后台跑,用到了BDE访问SQLServer,隔了一段时间就会莫名其妙的与数据库连接失败,查了一下BDE,发现已经死掉了,bde administrator也无法打开,报错,重启或注销机器 ...
- Apache2.4+PHP7.2配置站点访问变下载
问题描述:Apache正常工作,php-fpm正常工作,访问网址就变下载,显然是站点无法正常解析php造成的.php-fpm与apache的通信出现了问题. 解决方案: 如果php-fpm使用的是TC ...
- Nginx配置文件的反向代理
问题描述:项目需要预览pdf,前端控件支持的格式是http://192.168.0.1/pdf/a.pdf 是这样的,然后我就想给路径配个nginx反向代理就好了,但是配置的时候出问题了. 1.正确 ...
- 解决ubuntu的firefox上网速度慢【转】
在ubuntu上用firefox上网十分慢,但是在切换了chrome后发现上网速度很快,是解析域名上出现了问题,所以要为FF设置DNS缓存以提高速度.(在WIN下这个是自动设置好的,在ubuntu下需 ...
- C# 人工智能开源库生物特征
C# 人工智能开源库生物特征 Machine learning made in a minute http://accord-framework.net/ Accord.NET是AForge.NET框 ...
- k8s nfs
1 yum install -y nfs-utils-* 2 mkdir /home/data 3 vim /etc/exports /home/data 10.0.0.0/24(rw,async,n ...
- cmake vs qmake
qmake 是为 Qt 量身打造的,使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能 内置的 out-of source 构建.(目前QtCreator为qmake ...
- Asp.Net Core中创建多DbContext并迁移到数据库
在我们的项目中我们有时候需要在我们的项目中创建DbContext,而且这些DbContext之间有明显的界限,比如系统中两个DbContext一个是和整个数据库的权限相关的内容而另外一个DbConte ...