如何查找已安装.NET 3.5的服务器上是否已安装SP1?
查看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();
我查找如何在没有远程桌面或注册表访问权限的情况下检测安装在服务器上的框架版本,于是我来到了这个页面,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 );
}
}
请看这篇文章,它展示了你需要查找的注册表键,并提供了一个.NET库,可以帮助你进行检测。
首先,你需要查看HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install,这是一个DWORD值,用于确定是否已安装.NET 3.5。如果该值存在且设置为1,则表示已安装该版本的框架。
然后,查看HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\SP,这是一个DWORD值,用于指示服务包级别(其中0表示没有服务包)。
要正确地检测,你需要确保先安装.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% 是系统环境变量(例如 C:\Windows)。
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /V Version
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /V SP
这将查询计算机上是否安装了.NET Framework 3.5,以及它的版本和服务包信息。 - Kevin Smyth