que - ¿Cómo puedo saber si.NET 3.5 SP1 está instalado?
net framework 3.5 sp1 windows 10 (7)
¿Cómo puedo averiguar si el SP1 se ha instalado en un servidor que tiene .NET 3.5?
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).
Eche un vistazo a este article 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.
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}<br/>", version );
}
}
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.
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");
}
Use Agregar / Quitar programas 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();