这里也提出了类似的问题,但这是针对。net 3.5的。具体来说,我正在寻找以下:

确定安装了哪些.NET Framework版本和服务包的正确方法是什么? 是否有可以使用的注册表项列表? 框架版本之间是否存在依赖关系?


当前回答

请参阅如何:确定安装的. net框架版本(MSDN)。

MSDN提出了一个函数示例,它似乎完成了版本1-4的工作。根据文章,该方法输出为:

v2.0.50727  2.0.50727.4016  SP2
v3.0  3.0.30729.4037  SP2
v3.5  3.5.30729.01  SP1
v4
  Client  4.0.30319
  Full  4.0.30319

注意,对于“4.5及更高版本”,还有另一个函数。

其他回答

微软在下面的知识库文章中给出了这个问题的官方答案:

文章ID: 318785 -最近审查:2008年11月7日-修订:20.1 如何确定安装了哪些版本的.NET Framework以及是否应用了服务包

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

更新。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框架版本(MSDN)。

MSDN提出了一个函数示例,它似乎完成了版本1-4的工作。根据文章,该方法输出为:

v2.0.50727  2.0.50727.4016  SP2
v3.0  3.0.30729.4037  SP2
v3.5  3.5.30729.01  SP1
v4
  Client  4.0.30319
  Full  4.0.30319

注意,对于“4.5及更高版本”,还有另一个函数。

对于64位操作系统,路径为:

HKEY_LOCAL_MACHINE\SOFTWARE\wow6432Node\Microsoft\NET Framework Setup\NDP\