如何确定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.这将告诉您版本,如果您已过期,还会提供下载链接.
使用"控制面板"中的"添加/删除程序".
我试图弄清楚如何检测安装在服务器上的框架版本而无法访问远程桌面或注册表,我来到这个页面,所以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}
", version ); } }
看看这篇文章,它显示了您需要查找的注册表项,并提供了一个可以为您执行此操作的.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.如果这三个都是真的,那么您可以检查Service Pack级别.
检查是否存在以下目录:
在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).