用户可在他们的计算机上安装和运行 .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 版本列表,请访问注册表。 可使用注册表编辑器查看注册表或使用代码进行查询:

若要获取计算机上安装的 CLR 版本列表,请使用工具或代码:

有关检测安装的每个 .NET Framework 版本的更新的信息,请参阅如何:确定已安装的 .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 或更高版本 。

    备注

    注册表中的“.NET Framework 安装程序” 文件夹不以句点开头 。

  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 版本 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 及更高版本

  1. 使用 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 或更高版本 。

  2. 检查“Release”条目的值以确定安装的版本 。 为了向前兼容,可检查是否有一个值大于或等于 .NET Framework 版本表中所列的值。

下例检查注册表中“Release”条目的值,以查找已安装的 .NET Framework 4.5 及更高版本 :

C#复制
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复制
# PowerShell 5
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' | Get-ItemPropertyValue -Name Release | Foreach-Object { $_ -ge 394802 }
PowerShell复制
# 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

  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 安装程序”文件夹不以句点开头 。

    下图显示了 .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:

C#复制
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:

使用 Environment 类查找当前的 CLR 版本

重要

对于 .NET Framework 4.5 及更高版本,请勿使用 Environment.Version 属性来检测 CLR 的版本。 而应按照使用代码查找 .NET Framework 4.5 及更高版本中所述查询注册表。

  1. 查询 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。

  2. 获得 Version 对象后,按如下方式查询:

    • 对于主要版本标识符(例如,4 表示版本 4.0),请使用 Version.Major 属性 。

    • 对于次要版本标识符(例如,0 表示版本 4.0),请使用 Version.Minor 属性

    • 对于整个版本字符串(例如,4.0.30319.18010),请使用 Version.ToString 方法 。此方法返回一个值,该值反映正在执行代码的运行时的版本。 它不返回可能安装在计算机上的程序集版本或其他运行时版本。

以下示例使用 Environment.Version 属性检索 CLR 版本信息:

C#复制
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 版本列表,请访问注册表。 可使用注册表编辑器查看注册表或使用代码进行查询:

若要获取计算机上安装的 CLR 版本列表,请使用工具或代码:

有关检测安装的每个 .NET Framework 版本的更新的信息,请参阅如何:确定已安装的 .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 或更高版本 。

    备注

    注册表中的“.NET Framework 安装程序” 文件夹不以句点开头 。

  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 版本 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 及更高版本

  1. 使用 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 或更高版本 。

  2. 检查“Release”条目的值以确定安装的版本 。 为了向前兼容,可检查是否有一个值大于或等于 .NET Framework 版本表中所列的值。

下例检查注册表中“Release”条目的值,以查找已安装的 .NET Framework 4.5 及更高版本 :

C#复制
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复制
# PowerShell 5
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' | Get-ItemPropertyValue -Name Release | Foreach-Object { $_ -ge 394802 }
PowerShell复制
# 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

  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 安装程序”文件夹不以句点开头 。

    下图显示了 .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:

C#复制
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:

使用 Environment 类查找当前的 CLR 版本

重要

对于 .NET Framework 4.5 及更高版本,请勿使用 Environment.Version 属性来检测 CLR 的版本。 而应按照使用代码查找 .NET Framework 4.5 及更高版本中所述查询注册表。

  1. 查询 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。

  2. 获得 Version 对象后,按如下方式查询:

    • 对于主要版本标识符(例如,4 表示版本 4.0),请使用 Version.Major 属性 。

    • 对于次要版本标识符(例如,0 表示版本 4.0),请使用 Version.Minor 属性

    • 对于整个版本字符串(例如,4.0.30319.18010),请使用 Version.ToString 方法 。此方法返回一个值,该值反映正在执行代码的运行时的版本。 它不返回可能安装在计算机上的程序集版本或其他运行时版本。

以下示例使用 Environment.Version 属性检索 CLR 版本信息:

C#复制
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 版本的更多相关文章

  1. Inno Setup 检测已安装的.NET Framework 版本

    翻译自:http://kynosarges.org/DotNetVersion.html 由 Jordan Russell 写的 Inno Setup 是一个伟大的安装脚本程序,但缺乏一个内置的函数来 ...

  2. c#获取已安装的所有NET版本

    /// <summary> /// 获取已安装的所有NET版本 /// </summary> /// <returns></returns> publi ...

  3. Windows查看电脑上安装的.Net Framework版本的五种方法(转)

    1.查看安装文件判断Framwork版本号 打开资源管理器,比如我的电脑,再地址栏输入%systemroot%\Microsoft.NET\Framework后单击“转到”或者按回车. 在新文件夹中查 ...

  4. C# 查看本机安装的NET Framework 版本

    https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/how-to-determine-which-versions-ar ...

  5. 如何查看本机上安装的.NET Framework版本

    在开始菜单选择"运行", 或者快捷键 “windows键+R” 在命令窗口输入regedit.exe,打开注册表 在注册表中定位到如下节点 HKEY_LOCAL_MACHINE\S ...

  6. 安装corel x8提示你已安装了另外一个版本

    如果之前安装了其他版本,提示安装不进去,需卸载visual c++ 2015 redistributable(x64)即可(测试环境是安装了x6后,x8安装不了) windows install cl ...

  7. 检测电脑安装的net framework版本

    https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx To find .NET Framework versions by ...

  8. C# winform 检测当前电脑安装的.net framework版本

    private static bool GetDotNetRelease(int release) { const string subkey = @"SOFTWARE\Microsoft\ ...

  9. NET Framework 版本和依赖关系

    原文:https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/versions-and-dependencies 每个版本的 ...

随机推荐

  1. Cas(04)——更改认证方式

    在Cas Server的WEB-INF目录下有一个deployerConfigContext.xml文件,该文件是基于Spring的配置文件,里面存放的内容常常是部署人员需要修改的内容.其中认证方式也 ...

  2. Vue 项目中的ESlint语法报错问题

    在项目中的""和;经常会报错,真的很纠结,今天看到一个解决方法,可以不用卸载删除 在项目根目录中,新建一个.prettierrc文件,来移除分号,和替换为单引号. { " ...

  3. Beginning Linux Programming 学习--chapter 1 Getting start--What's linux,GNU,HeaderFiles, Libraries

    "文明的建立的不是机器而是思想" -- 托尔斯泰 Linux truly become a viable operating system, especially in the s ...

  4. Deepin安装前分区总结

    linux的分区的概念应该这么理解,为某个目录创建/挂载分区,比如为/home创建/挂载到某个分区上: 1.需要/boot分区,1.5G: 2./分区,100G:[会自动创建其他目录如/srv,/ro ...

  5. Python 常用包收集

    转自:http://www.cnblogs.com/Logic0/archive/2010/09/03/1850382.html 常用的自带类库 常用的外部类库       Tkinter———— P ...

  6. [转帖]我最近研究了hive的相关技术,有点心得,这里和大家分享下。

    我最近研究了hive的相关技术,有点心得,这里和大家分享下. https://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html 首 ...

  7. Python-03-流程控制

    一.if判断语句 1. if...else if 条件: 满足条件时要做的事情1 满足条件时要做的事情2 ...... else: 不满足条件时要做的事情1 不满足条件时要做的事情2 ...... # ...

  8. python第三天---列表的魔法

    # list 列表 # 中括号括起来,逗号分隔每个元素, # 列表中可以是数字字符串.列表等都可以放进去 list1 = [123, "book", "手动", ...

  9. teamviewer远程控制程序免费版百度云下载

    TeamViewer是一个远程共享桌面软件,使远程传输变得简单快速,远程访问安全可靠,能在任何防火墙后台进行远程控制.只需用户在两台计算机上同时运行这个软件就可以开始工作.使用时关闭杀毒软件,防止误报 ...

  10. 机器学习-EM算法笔记

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断,混合高斯模型 ...