如何检测安装了哪些.NET Framework版本和Service Pack?


Answers

在下面的知识库文章中有一个官方的微软对这个问题的回答:

文章编号:318785 - 最后修改:2008年11月7日 - 修订:20.1如何确定安装了哪些版本的.NET Framework以及是否应用了Service Pack

不幸的是,它似乎没有工作,因为在2.0目录中的mscorlib.dll版本有一个2.0版本,即使3.5 SP1安装在3.0或3.5目录中没有mscorlib.dll版本...为什么微软官方的回答会如此错误吗?

Question

在这里提出一个类似的问题,但它是特定于.NET 3.5的。 具体来说,我正在寻找以下内容:

  1. 什么是确定安装哪些.NET Framework版本和Service Pack的正确方法?
  2. 是否有一个可以使用的注册表项列表?
  3. 框架版本之间是否存在任何依赖关系?






枚举HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP 。 每个子项都是一个.NET版本。 如果计算机上存在Install=1值,则显示Service Pack的SP值以及使用MSI=1安装的MSI=1值。 (Windows Vista上的.NET 2.0没有最后一个例子,因为它是操作系统的一部分。)




使用SignumFramework的Signum.Utilities库(可以独立使用),您可以很好地使用它,而无需亲自处理注册表:

AboutTools.FrameworkVersions().ToConsole();
//Writes in my machine:
//v2.0.50727 SP2
//v3.0 SP2
//v3.5 SP1






我需要找出我的电脑上有哪个版本的.NET框架,我所做的只是去控制面板,选择“卸载程序”选项。 之后,我按名称对程序进行了排序,并找到了Microsoft .NET Framework 4 Client Profile。







在Windows 7中(它也适用于Windows 8,但我没有测试过):

转到命令提示符

转到命令提示符的步骤:

  1. 点击开始菜单
  2. 在搜索框中,输入“cmd”(不含引号)
  3. 打开cmd.exe

在cmd中输入这个命令

wmic /namespace:\\root\cimv2 path win32_product where "name like '%%.NET%%'" get version

这样就可以安装最新版本的.NET Framework。

也可以尝试Raymond.cc Utilities的相同。




.NET 4.5.1更新

现在.NET 4.5.1已经可用了,在注册表中名为Release的键的实际值需要被检查,而不仅仅是它的存在。 值为378758表示安装了.NET Framework 4.5.1。 但是,如此处所述在Windows 8.1上这个值是378675。