如何知道.NET 3.5 SP1是否安装?

我怎样才能找出SP1是否已经安装在一个具有.NET 3.5的服务器上?

使用控制面板中的添加/删除程序。

看看HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\ 。 其中之一必须是真实的:

  • 该键中的Version值应该是3.5.30729.01
  • 或者同一个密钥中的SP值应该是1

在C#中(取自第一条评论),你可以沿着这些线做一些事情:

 const string name = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5"; RegistryKey subKey = Registry.LocalMachine.OpenSubKey(name); var version = subKey.GetValue("Version").ToString(); var servicePack = subKey.GetValue("SP").ToString(); 

您可以使用服务器上的IE访问SmallestDotNet 。 这将告诉你的版本,并提供一个下载链接,如果你过时了。

我来到这个页面,试图找出如何检测服务器上安装的框架版本,无需访问远程桌面或registry,所以Danny V的答案为我工作。

 string path = System.Environment.SystemDirectory; path = path.Substring( 0, path.LastIndexOf('\\') ); path = Path.Combine( path, "Microsoft.NET" ); // C:\WINDOWS\Microsoft.NET\ string[] versions = new string[]{ "Framework\\v1.0.3705", "Framework64\\v1.0.3705", "Framework\\v1.1.4322", "Framework64\\v1.1.4322", "Framework\\v2.0.50727", "Framework64\\v2.0.50727", "Framework\\v3.0", "Framework64\\v3.0", "Framework\\v3.5", "Framework64\\v3.5", "Framework\\v3.5\\Microsoft .NET Framework 3.5 SP1", "Framework64\\v3.5\\Microsoft .NET Framework 3.5 SP1", "Framework\\v4.0", "Framework64\\v4.0" }; foreach( string version in versions ) { string versionPath = Path.Combine( path, version ); DirectoryInfo dir = new DirectoryInfo( versionPath ); if( dir.Exists ) { Response.Output.Write( "{0}<br/>", version ); } } 

看看这篇文章 ,其中显示您需要查找的registry项,并提供一个.NET库,将为您做这个。

首先,您应该通过查看HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install来确定是否安装了.NET 3.5,这是一个DWORD值。 如果该值存在并设置为1,则安装该版本的Framework。

查看HKLM \ Software \ Microsoft \ NET Framework安装\ NDP \ v3.5 \ SP,这是一个表示Service Pack级别(其中0不是Service Pack)的DWORD值。

为了正确的事情,你真的需要确保首先安装.NET Fx 2.0和.NET Fx 3.0,然后检查是否安装了.NET 3.5。 如果三者都是真的,那么您可以检查服务包级别。

检查是否存在以下目录:

在64位机器中:%SYSTEMROOT%\ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

在32位机器中:%SYSTEMROOT%\ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

其中%SYSTEMROOT%是SYSTEMROOT环境variables(例如C:\ Windows)。

假设名称无处不在“Microsoft .NET Framework 3.5 SP1”,您可以使用这个:

 string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey)) { return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1"); }