如何检测已安装的Microsoft.Net Framework的版本

论坛里面有人问,假设某Windows机器上已安装了.Net Framework 3.5,如何判断有没有安装.Net Framework 3.5 SP1?

这个问题,我首先想到,每一个版本的.Net Framework的安装过程都会在Windows目录下的\Microsoft.NET\Framework目录中生成一个子目录(安装目录)。比如说,假设Windows目录在C盘且不曾在安装OS时重命名过Windows目录,那么.Net Framework 3.5的安装目录应该是:

C:\Windows\Microsoft.NET\Framework\v3.5

在这个目录下应该有一个该版本的MSBuild.exe,我们执行 MSBuild /version 应该能得到版本信息。

为了提高命令的适应性我们用 %WINDIR% 来代替 C:\Windows ,然后我们在控制台中执行下列命令:

cd %WINDIR%\Microsoft.NET\Framework\v3.5
MSBuild /version

这样得到的输出信息里面就包含了这台计算机上.Net Framework 3.5的确切版本。

我的执行结果如下:


那么这个版本号 3.5.30729.5420 能否说明我们有没有安装.Net 3.5 SP1呢?我们查看这个地址:

What .NET Framework version numbers go with what service pack
http://blogs.msdn.com/b/astebner/archive/2005/07/12/438245.aspx


从这个列表中,我们可以看到,我们实际的版本号 3.5.30729.5420 应该是不小于.Net 3.5 SP1 的。


这是判断方法之一。


还有一种判断方法是从注册表来判断。在命令行中运行regedit,搜索“Net Framework Setup”:


这样我们就可以搜到这样的一个路径:


从这个搜索结果来看,我们能够在这个路径下看到我们安装过各个版本的 .Net Framework 的“芳踪”:

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

注意是在Windows 7上搜索的结果。我没有验证在Windows XP、Vista上这个路径会不会不一样。我猜测应该是一样的。

看样子遍历这个路径下的sub path就能够得到所有已安装的.Net Framework的版本信息。

在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 这个路径下,我们可以看到,版本(Version)是 3.5.30729.5420,与我们前面的判断方法结果一致。SP这一项的键值是 1,意思是已安装 SP1。



参考文献:

  • What .NET Framework version numbers go with what service pack http://blogs.msdn.com/b/astebner/archive/2005/07/12/438245.aspx
  • How to determine which versions and service pack levels of the Microsoft .NET Framework are installedhttp://support.microsoft.com/kb/318785
  • [NSIS] Get .NET Version http://nsis.sourceforge.net/Get_.NET_Version


你可能感兴趣的:(.Net)