如何判断是否安装了.NET 3.5 SP1?

时间:2008-10-13 20:32:43

标签: .net-3.5 installation

如何确定SP1是否已安装在具有.NET 3.5的服务器上?

7 个答案:

答案 0 :(得分:133)

看看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();

答案 1 :(得分:27)

您可以从服务器使用IE转到SmallestDotNet。这将告诉您版本,如果您已过期,还会提供下载链接。

答案 2 :(得分:18)

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

答案 3 :(得分:12)

我试图弄清楚如何检测服务器上安装的框架版本而无法访问远程桌面或注册表,我来到这个页面,所以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 );
    }
}

答案 4 :(得分:9)

看看这个article,它显示了你需要查找的注册表项,并提供了一个.NET库,可以为你完成这个。

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

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

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

答案 5 :(得分: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环境变量(例如C:\ Windows)。

答案 6 :(得分:2)

假设名称无处不在“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");
}