Answers:
看看HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
。其中之一必须为真:
Version
键中的值应为3.5.30729.01SP
同一键中的值应为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();
Version
是3.5.30729.5420
和SP
是1
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
您可以从服务器使用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}<br/>", version );
}
}
看一下这篇文章,其中显示了您需要查找的注册表项,并提供了一个.NET库来为您完成此操作。
首先,应通过查看HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install(这是一个DWORD值)来确定是否安装了.NET 3.5。如果存在该值并将其设置为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)。
假设名称到处都是“ 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");
}