Respostas:
Olhe para HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
. Um destes deve ser verdadeiro:
Version
valor dessa chave deve ser 3.5.30729.01SP
valor na mesma chave deve ser 1Em C # (retirado do primeiro comentário), você poderia fazer algo ao longo destas linhas:
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
e 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
Você pode ir para SmallestDotNet usando o IE do servidor. Isso informará a versão e também fornecerá um link para download se você estiver desatualizado.
Cheguei a esta página enquanto tentava descobrir como detectar as versões do framework instaladas em um servidor sem acesso à área de trabalho remota ou registro, então a resposta de Danny V funcionou para mim.
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 );
}
}
Dê uma olhada neste artigo que mostra as chaves de registro que você precisa procurar e fornece uma biblioteca .NET que fará isso para você.
Primeiro, você deve determinar se o .NET 3.5 está instalado observando HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install, que é um valor DWORD. Se esse valor estiver presente e definido como 1, essa versão do Framework está instalada.
Observe HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, que é um valor DWORD que indica o nível do Service Pack (onde 0 é nenhum service pack).
Para estar correto sobre as coisas, você realmente precisa garantir que .NET Fx 2.0 e .NET Fx 3.0 sejam instalados primeiro e, em seguida, verificar se o .NET 3.5 está instalado. Se todos os três forem verdadeiros, você pode verificar o nível do service pack.
Verifique se o seguinte diretório existe:
Em máquinas de 64 bits:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Em máquinas de 32 bits:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Onde% SYSTEMROOT% é a variável de ambiente SYSTEMROOT (por exemplo, C: \ Windows).
Supondo que o nome esteja em todo lugar "Microsoft .NET Framework 3.5 SP1", você pode usar isto:
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}