这里也提出了类似的问题,但这是针对。net 3.5的。具体来说,我正在寻找以下:
确定安装了哪些.NET Framework版本和服务包的正确方法是什么? 是否有可以使用的注册表项列表? 框架版本之间是否存在依赖关系?
这里也提出了类似的问题,但这是针对。net 3.5的。具体来说,我正在寻找以下:
确定安装了哪些.NET Framework版本和服务包的正确方法是什么? 是否有可以使用的注册表项列表? 框架版本之间是否存在依赖关系?
当前回答
列举HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP的子键。每个子键都是一个。net版本。如果它存在于机器上,则它应该具有Install=1值,如果使用MSI安装,则它应该具有显示服务包的SP值和MSI=1值。(.例如,Windows Vista上的NET 2.0没有最后一个,因为它是操作系统的一部分。)
其他回答
Framework 4 beta版安装到不同的注册表项。
using System;
using System.Collections.ObjectModel;
using Microsoft.Win32;
class Program
{
static void Main(string[] args)
{
foreach(Version ver in InstalledDotNetVersions())
Console.WriteLine(ver);
Console.ReadKey();
}
public static Collection<Version> InstalledDotNetVersions()
{
Collection<Version> versions = new Collection<Version>();
RegistryKey NDPKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
if (NDPKey != null)
{
string[] subkeys = NDPKey.GetSubKeyNames();
foreach (string subkey in subkeys)
{
GetDotNetVersion(NDPKey.OpenSubKey(subkey), subkey, versions);
GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Client"), subkey, versions);
GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Full"), subkey, versions);
}
}
return versions;
}
private static void GetDotNetVersion(RegistryKey parentKey, string subVersionName, Collection<Version> versions)
{
if (parentKey != null)
{
string installed = Convert.ToString(parentKey.GetValue("Install"));
if (installed == "1")
{
string version = Convert.ToString(parentKey.GetValue("Version"));
if (string.IsNullOrEmpty(version))
{
if (subVersionName.StartsWith("v"))
version = subVersionName.Substring(1);
else
version = subVersionName;
}
Version ver = new Version(version);
if (!versions.Contains(ver))
versions.Add(ver);
}
}
}
}
对于64位操作系统,路径为:
HKEY_LOCAL_MACHINE\SOFTWARE\wow6432Node\Microsoft\NET Framework Setup\NDP\
更新。net 4.5.1
现在. net 4.5.1可用了,需要检查注册表中名为Release的键的实际值,而不仅仅是它是否存在。值为378758表示安装了. net Framework 4.5.1。但是,在Windows 8.1上,这个值是378675。
有一个可用的GUI工具,ASoft . net Version Detector,它一直被证明是高度可靠的。它可以通过在命令行上指定XML输出的文件名来创建XML文件。
您可以将其用于自动化。这是一个很小的程序,用非编程语言编写的。NET依赖语言,不需要安装。
我需要找出我电脑上的。net框架的版本,我所做的就是打开控制面板,选择“卸载程序”选项。之后,我把程序按名称分类,找到了Microsoft . net Framework 4客户端配置文件。