C#如何:确定安装了哪些.NETFramework版本
如何:确定安装了哪些 .NET Framework 版本
.NET Framework (current version)
⽤户可在他们的计算机上安装和运⾏ .NET Framework 的多个版本。当你开发或部署应⽤时,你可能需要知道⽤户的计算机上安装了哪些 .NET Framework 版本。请注意,.NET Framework 由两个采⽤不同版本的主要组件构成:
⼀组程序集,它们是为应⽤提供功能的类型与资源的集合。.NET Framework 和程序集使⽤相同的版本号。
公共语⾔运⾏时 (CLR),可管理并执⾏应⽤的代码。CLR 由其⾃⼰的版本号标识(请参阅 .NET Framework 版本和依赖关系)。
若要获取计算机上安装的 .NET Framework 版本的准确列表,你可以在代码中查看注册表或查询注册表:
查看注册表(版本 1-4)查看注册表(版本 4.5 和更⾼版本)
使⽤代码查询注册表(版本 1-4)
使⽤代码查询注册表(版本 4.5 和更⾼版本)
若要查 CLR 版本,你可以使⽤⼯具或代码:
使⽤ Clrver ⼯具
使⽤代码查询 System.Environment 类
有关检测安装的每个 .NET Framework 版本的更新的信息,请参阅如何:确定安装了哪些 .NET Framework 更新。有关安装 .NET Framework 的信息,请参阅安装指南。
通过查看注册表来查 .NET Framework 版本 (.NET Framework 1-4)
1. 在“开始”菜单上,选择“运⾏”。
2. 在“打开”框中,输⼊“”。
你必须具有管理凭据才能运⾏ 。
3. 在注册表编辑器中,打开以下⼦项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
安装的版本将在 NDP ⼦项的下⽅列出。版本号存储在“版本”项中。对于 .NET Framework 4,“版本”项位于客户端或完整⼦项下(在 NDP 下),或在两个⼦项下。
注意
注册表中的“NET Framework Setup”⽂件夹不会以句点开头。
通过查看注册表来查 .NET Framework 版本(.NET Framework 4.5 和更⾼版本)
1. 在“开始”菜单上,选择“运⾏”。
2. 在“打开”框中,输⼊“”。
你必须具有管理凭据才能运⾏ 。
3. 在注册表编辑器中,打开以下⼦项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full
请注意,Full ⼦项的路径包括 Net Framework ⼦项,⽽不包括 .NET Framework。
注意
如果 Full ⼦项不存在,则表⽰你尚未安装 .NET Framework 4.5 或更⾼版本。
检查名为 Release 的 DWORD 值。存在 Release DWORD 表明该计算机上已安装 .NET Framework 4.5 或更新版本。
Release DWORD 的值指⽰将安装的 .NET Framework 版本。
Release DWORD 的值版本
378389.NET Framework 4.5
378675使⽤ Windows 8.1 或 Windows Server 2012 R2 安装的 .NET Framework 4.5.1
378758安装在 Windows 8、Windows 7 SP1 或 Windows Vista SP2 上的 .NET Framework 4.5.1
379893.NET Framework 4.5.2
.NET Framework 4.6
在 Windows 10 系统上:393295
在所有其他操作系统版本上:393297
通过在代码中查询注册表来查 .NET Framework 版本 (.NET Framework 1-4)
使⽤ Microsoft.Win32.RegistryKey 类访问 Windows 注册表中 HKEY_LOCAL_MACHINE 下的 Software\Microsoft\NET Framework Setup\NDP\ ⼦项。
下⾯的代码显⽰此查询的⽰例。
注意
此代码不演⽰如何检测 .NET Framework 4.5 或更⾼版本。检查 Release DWORD 以检测这些版本,如上⼀节所述。C#VB
using System;
using Microsoft.Win32;
C#VB
private static void GetVersionFromRegistry()
{
// Opens the registry key for the .NET Framework entry.
using (RegistryKey ndpKey =
RegistryKey.OpenRemoteBaseKey(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 (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
// RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
foreach (string versionKeyName in ndpKey.GetSubKeyNames())
{
if (versionKeyName.StartsWith("v"))
{
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.
Console.WriteLine(versionKeyName + " " + name);
else
{
if (sp != "" && install == "1")
{
Console.WriteLine(versionKeyName + " " + name + " SP" + sp);
}
}
if (name != "")
{
continue;
}
foreach (string subKeyName in versionKey.GetSubKeyNames())
{
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.
Console.WriteLine(versionKeyName + " " + name);
else
{
if (sp != "" && install == "1")
{
Console.WriteLine(" " + subKeyName + " " + name + " SP" + sp);
}
else if (install == "1")
{
Console.WriteLine(" " + subKeyName + " " + name);
}
}
}
}
}
}
}
该⽰例⽣成类似下⾯内容的输出:
v2.0.50727 2.0.50727.4016 SP2
v3.0 3.0.30729.4037 SP2
v3.5 3.5.30729.01 SP1
v4
v4
Client 4.0.30319
Full 4.0.30319
通过在代码中查询注册表来查 .NET Framework 版本(.NET Framework 4.5 和更⾼版本)
1. Release DWORD 的存在表明该计算机上已安装 .NET Framework 4.5 或更⾼版本。关键字的值表⽰已安装的版本。若要检查此关键字,使⽤OpenBaseKey 类
spring framework版本查看的 OpenSubKey 和 Microsoft.Win32.RegistryKey ⽅法访问 Windows 注册表中的 HKEY_LOCAL_MACHINE 下的 Software\Microsoft\NET Framework Setup\NDP\v4.0\Full ⼦项。
2. 检查 Release 关键字的值以确定安装的版本。为了向前兼容,你可以检查是否有⼀个值⼤于或等于表中所列的值。此处是 .NET Framework 版本及相关联的 Release 关键字。
版本Release DWORD 的值
.NET Framework 4.5378389
使⽤ Windows 8.1 安装的 .NET Framework 4.5.1378675
安装在 Windows 8、Windows 7 SP1 或 Windows Vista SP2 上的 .NET Framework 4.5.1378758
.NET Framework 4.5.2379893
随 Windows 10 ⼀起安装的 .NET Framework 4.6393295
在所有其他 Windows 操作系统版本上安装的 .NET Framework 4.6393297
下⾯是检查是否有⼤于或等于每个版本的发⾏关键字值的值的⽰例:
C#VB
using System;
using Microsoft.Win32;
C#VB
private static void Get45or451FromRegistry()
{
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\")) { int releaseKey = Convert.ToInt32(ndpKey.GetValue("Release"));
if (true) {
Console.WriteLine("Version: " + CheckFor45DotVersion(releaseKey));
}
}
}
C#VB
// Checking the version using >= will enable forward compatibility,
// however you should always compile your code on newer versions of
// the framework to ensure your app works the same.
private static string CheckFor45DotVersion(int releaseKey)
{
if (releaseKey >= 393295) {
return "4.6 or later";
}
if ((releaseKey >= 379893)) {
return "4.5.2 or later";
}
if ((releaseKey >= 378675)) {
return "4.5.1 or later";
}
if ((releaseKey >= 378389)) {
return "4.5 or later";
}
// This line 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";
}
该⽰例⽣成类似下⾯内容的输出:
Version: 4.5.1 or later
使⽤ Clrver ⼯具查当前运⾏时版本
使⽤ CLR 版本⼯具 () 决定已安装在计算机上的公共语⾔运⾏时的版本。
从 Visual Studio 命令提⽰符处,输⼊ clrver。该命令⽣成类似下⾯的输出:
Versions installed on the machine:
v2.0.50727
v4.0.30319
有关使⽤此⼯具的详细信息,请参阅 (CLR 版本⼯具)。
通过在代码中查询 Environment 类来查当前运⾏时版本
查询 Environment.Version 属性,以检索标识当前正在执⾏代码的运⾏时版本的 Version 对象。你可以使⽤ Version.Major 属性获取主版本标识符(例如,4.0 版的“4”),使⽤ Version.Minor 属性获取次版本标识符(例如,4.0 版的“0”),或使⽤ Object.ToString ⽅法获取完整版本字符串(例如“4.0.30319.18010”,如下⾯的代码中所⽰)。此属性返回⼀个值,该值反映当前正在执⾏代码的运⾏时的版本;它不返回程序集版本或可能已在计算机上安装的运⾏时的其他版本。
对于 .NET Framework 版本 4、4.5、4.5.1 和 4.5.2,Environment.Version 属性返回字符串表现形式具有窗体 4. 的 Version 对象。对于 .NET Framework 4.6,它具有窗体 4.0.30319.42000。
以下是在 Environment.Version 属性中查询运⾏时版本信息的⽰例:
C#VB
using System;
using Microsoft.Win32;
C#VB
private static void GetVersionFromEnvironment()
{
Console.WriteLine("Version: " + Environment.Version.ToString());
}
该⽰例⽣成类似下⾯内容的输出:
Version: 4.0.30319.18010
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论