¿Cómo puedo saber si .NET 3.5 SP1 está instalado?

¿Cómo puedo averiguar si el SP1 se ha instalado en un servidor que tiene .NET 3.5?

Use Agregar / Quitar progtwigs del Panel de control.

Mire HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\ . Uno de estos debe ser cierto:

  • El valor de la Version en esa clave debe ser 3.5.30729.01
  • O el valor de SP en la misma clave debe ser 1

En C # (tomado del primer comentario), podrías hacer algo en esta línea:

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

Puede ir a SmallestDotNet usando IE desde el servidor. Eso le dirá la versión y también proporcionará un enlace de descarga si no está actualizado.

Llegué a esta página mientras trataba de descubrir cómo detectar las versiones de framework instaladas en un servidor sin acceso a escritorio o registro remotos, por lo que la respuesta de Danny V funcionó para mí.

 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 ); } }

Eche un vistazo a este artículo que muestra las claves de registro que debe buscar y proporciona una biblioteca .NET que hará esto por usted.

En primer lugar, debe determinar si .NET 3.5 se instala consultando HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install, que es un valor DWORD. Si ese valor está presente y se establece en 1, entonces esa versión del Framework está instalada.

Mire HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, que es un valor DWORD que indica el nivel del Service Pack (donde 0 no es un service pack).

Para tener las cosas correctas, realmente debe asegurarse de que .NET Fx 2.0 y .NET Fx 3.0 estén instalados primero y luego verifique si .NET 3.5 está instalado. Si los tres son verdaderos, entonces puede verificar el nivel del paquete de servicio.

Compruebe que el siguiente directorio existe:

En máquinas de 64 bits:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

En máquinas de 32 bits:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

Donde% SYSTEMROOT% es la variable del entorno SYSTEMROOT (p. Ej., C: \ Windows).

Suponiendo que el nombre esté en todas partes “Microsoft .NET Framework 3.5 SP1”, puede usar esto:

 string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey)) { return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1"); }