versiones ver tengo saber que net installed instalado framework detector desinstalar como check .net installation version-detection

.net - tengo - net framework versiones



¿Cómo detecto qué versiones de.NET Framework y paquetes de servicio están instalados? (13)

here se hizo una pregunta similar, pero era específica de .NET 3.5. Específicamente, estoy buscando lo siguiente:

  1. ¿Cuál es la forma correcta de determinar qué versiones de .NET Framework y paquetes de servicio están instalados?
  2. ¿Hay una lista de claves de registro que se pueden utilizar?
  3. ¿Existen dependencias entre las versiones de Framework?

Actualización para .NET 4.5.1

Ahora que .NET 4.5.1 está disponible, se debe verificar el valor real de la clave denominada Liberar en el registro, no solo su existencia. Un valor de 378758 significa que .NET Framework 4.5.1 está instalado. Sin embargo, como se describe here este valor es 378675 en Windows 8.1.


Aquí hay un script de PowerShell para obtener versiones instaladas de .NET framework.

function Get-KeyPropertyValue($key, $property) { if($key.Property -contains $property) { Get-ItemProperty $key.PSPath -name $property | select -expand $property } } function Get-VersionName($key) { $name = Get-KeyPropertyValue $key Version $sp = Get-KeyPropertyValue $key SP $install = Get-KeyPropertyValue $key Install if($sp) { "$($_.PSChildName) $name SP $sp" } else{ "$($_.PSChildName) $name" } } function Get-FrameworkVersion{ dir "hklm:/SOFTWARE/Microsoft/NET Framework Setup/NDP/" |? {$_.PSChildName -like "v*"} |%{ if( $_.Property -contains "Version") { Get-VersionName $_ } else{ $parent = $_ Get-ChildItem $_.PSPath |%{ $versionName = Get-VersionName $_ "$($parent.PSChildName) $versionName" } } } } $v4Directory = "hklm:/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Full" if(Test-Path $v4Directory) { $v4 = Get-Item $v4Directory $version = Get-KeyPropertyValue $v4 Release switch($version){ 378389 {".NET Framework 4.5"; break;} 378675 {".NET Framework 4.5.1 installed with Windows 8.1 or Windows Server 2012 R2"; break;} 378758 {".NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2"; break;} 379893 {".NET Framework 4.5.2"; break;} { 393295, 393297 -contains $_} {".NET Framework 4.6"; break;} { 394254, 394271 -contains $_} {".NET Framework 4.6.1"; break;} { 394802, 394806 -contains $_} {".NET Framework 4.6.2"; break; } } }

Fue escrito basándose en Cómo: Determinar qué versiones de .NET Framework están instaladas . Utilice la función Get-FrameworkVersion () para obtener información sobre las versiones instaladas de .NET framework.


El Framework 4 beta se instala en una clave de registro diferente.

using System; using System.Collections.ObjectModel; using Microsoft.Win32; class Program { static void Main(string[] args) { foreach(Version ver in InstalledDotNetVersions()) Console.WriteLine(ver); Console.ReadKey(); } public static Collection<Version> InstalledDotNetVersions() { Collection<Version> versions = new Collection<Version>(); RegistryKey NDPKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE/Microsoft/NET Framework Setup/NDP"); if (NDPKey != null) { string[] subkeys = NDPKey.GetSubKeyNames(); foreach (string subkey in subkeys) { GetDotNetVersion(NDPKey.OpenSubKey(subkey), subkey, versions); GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Client"), subkey, versions); GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Full"), subkey, versions); } } return versions; } private static void GetDotNetVersion(RegistryKey parentKey, string subVersionName, Collection<Version> versions) { if (parentKey != null) { string installed = Convert.ToString(parentKey.GetValue("Install")); if (installed == "1") { string version = Convert.ToString(parentKey.GetValue("Version")); if (string.IsNullOrEmpty(version)) { if (subVersionName.StartsWith("v")) version = subVersionName.Substring(1); else version = subVersionName; } Version ver = new Version(version); if (!versions.Contains(ver)) versions.Add(ver); } } } }


El registro es la forma oficial de detectar si una versión específica de Framework está instalada.

Las claves de registro necesarias cambian según la versión de Framework que esté buscando:

Framework Version Registry Key ------------------------------------------------------------------------------------------ 1.0 HKLM/Software/Microsoft/.NETFramework/Policy/v1.0/3705 1.1 HKLM/Software/Microsoft/NET Framework Setup/NDP/v1.1.4322/Install 2.0 HKLM/Software/Microsoft/NET Framework Setup/NDP/v2.0.50727/Install 3.0 HKLM/Software/Microsoft/NET Framework Setup/NDP/v3.0/Setup/InstallSuccess 3.5 HKLM/Software/Microsoft/NET Framework Setup/NDP/v3.5/Install 4.0 Client Profile HKLM/Software/Microsoft/NET Framework Setup/NDP/v4/Client/Install 4.0 Full Profile HKLM/Software/Microsoft/NET Framework Setup/NDP/v4/Full/Install

En general estás buscando:

"Install"=dword:00000001

excepto para .NET 1.0, donde el valor es una cadena ( REG_SZ ) en lugar de un número ( REG_DWORD ).

La determinación del nivel de service pack sigue un patrón similar:

Framework Version Registry Key ------------------------------------------------------------------------------------------ 1.0 HKLM/Software/Microsoft/Active Setup/Installed Components/{78705f0d-e8db-4b2d-8193-982bdda15ecd}/Version 1.0[1] HKLM/Software/Microsoft/Active Setup/Installed Components/{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}/Version 1.1 HKLM/Software/Microsoft/NET Framework Setup/NDP/v1.1.4322/SP 2.0 HKLM/Software/Microsoft/NET Framework Setup/NDP/v2.0.50727/SP 3.0 HKLM/Software/Microsoft/NET Framework Setup/NDP/v3.0/SP 3.5 HKLM/Software/Microsoft/NET Framework Setup/NDP/v3.5/SP 4.0 Client Profile HKLM/Software/Microsoft/NET Framework Setup/NDP/v4/Client/Servicing 4.0 Full Profile HKLM/Software/Microsoft/NET Framework Setup/NDP/v4/Full/Servicing [1] Windows Media Center or Windows XP Tablet Edition

Como puede ver, la determinación del nivel de SP para .NET 1.0 cambia si se está ejecutando en Windows Media Center o Windows XP Tablet Edition. Nuevamente, .NET 1.0 usa un valor de cadena mientras que todos los demás usan un DWORD.

Para .NET 1.0, el valor de cadena en cualquiera de estas claves tiene un formato de #, #, ####, #. El último # es el nivel de Service Pack.

Si bien no lo pedí explícitamente, si desea saber el número de versión exacto de Framework, debería usar estas claves de registro:

Framework Version Registry Key ------------------------------------------------------------------------------------------ 1.0 HKLM/Software/Microsoft/Active Setup/Installed Components/{78705f0d-e8db-4b2d-8193-982bdda15ecd}/Version 1.0[1] HKLM/Software/Microsoft/Active Setup/Installed Components/{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}/Version 1.1 HKLM/Software/Microsoft/NET Framework Setup/NDP/v1.1.4322 2.0[2] HKLM/Software/Microsoft/NET Framework Setup/NDP/v2.0.50727/Version 2.0[3] HKLM/Software/Microsoft/NET Framework Setup/NDP/v2.0.50727/Increment 3.0 HKLM/Software/Microsoft/NET Framework Setup/NDP/v3.0/Version 3.5 HKLM/Software/Microsoft/NET Framework Setup/NDP/v3.5/Version 4.0 Client Profile HKLM/Software/Microsoft/NET Framework Setup/NDP/v4/Version 4.0 Full Profile HKLM/Software/Microsoft/NET Framework Setup/NDP/v4/Version [1] Windows Media Center or Windows XP Tablet Edition [2] .NET 2.0 SP1 [3] .NET 2.0 Original Release (RTM)

Nuevamente, .NET 1.0 usa un valor de cadena mientras que todos los demás usan un DWORD.

Notas adicionales

  • para .NET 1.0, el valor de cadena en cualquiera de estas claves tiene un formato de #,#,####,# . La parte #,#,#### de la cadena es la versión de Framework.

  • Para .NET 1.1, usamos el nombre de la clave de registro, que representa el número de versión.

  • Finalmente, si observa las dependencias, .NET 3.0 agrega funcionalidad adicional a .NET 2.0, de modo que tanto .NET 2.0 como .NET 3.0 deben ser evaluados como instalados para decir correctamente que .NET 3.0 está instalado. Del mismo modo, .NET 3.5 agrega funcionalidad adicional a .NET 2.0 y .NET 3.0, por lo que .NET 2.0, .NET 3.0 y .NET 3. deberían evaluar su instalación para decir correctamente que .NET 3.5 está instalado.

  • .NET 4.0 instala una nueva versión de CLR (CLR versión 4.0) que puede ejecutarse en paralelo con CLR 2.0.

Actualización para .NET 4.5

No habrá una clave v4.5 en el registro si se instala .NET 4.5. En su lugar, debe verificar si la HKLM/Software/Microsoft/NET Framework Setup/NDP/v4/Full contiene un valor llamado Release . Si este valor está presente, .NET 4.5 está instalado, de lo contrario no lo está. Más detalles se pueden encontrar here y aquí .


En Windows 7 (también debería funcionar para Windows 8, pero no lo he probado):

Ir a un símbolo del sistema

Pasos para ir a un símbolo del sistema:

  1. Haga clic en el menú Inicio
  2. En el cuadro de búsqueda, escriba "cmd" (sin comillas)
  3. Abrir cmd.exe

En cmd, escriba este comando

wmic /namespace://root/cimv2 path win32_product where "name like ''%%.NET%%''" get version

Esto da la última versión de NET Framework instalada.

También se puede probar las utilidades Raymond.cc para el mismo.


Enumere las subclaves de HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP . Cada subclave es una versión .NET . Debe tener el valor Install=1 si está presente en la máquina, un valor SP que muestra el paquete de servicio y un valor MSI=1 si se instaló utilizando un MSI. (.NET 2.0 en Windows Vista no tiene el último, por ejemplo, ya que es parte del sistema operativo).


Hay una herramienta GUI disponible, ASoft .NET Version Detector , que siempre ha demostrado ser altamente confiable. Puede crear archivos XML especificando el nombre de archivo de la salida XML en la línea de comandos.

Podrías usar esto para la automatización. Es un programa pequeño, escrito en un lenguaje no dependiente de .NET y no requiere instalación.


Hay una respuesta oficial de Microsoft a esta pregunta en el siguiente artículo de la base de conocimientos:

Id. De artículo: 318785 - Última revisión: 7 de noviembre de 2008 - Revisión: 20.1 Cómo determinar qué versiones de .NET Framework están instaladas y si se han aplicado los paquetes de servicio

Desafortunadamente, no parece funcionar, porque la versión mscorlib.dll en el directorio 2.0 tiene una versión 2.0, y no hay una versión mscorlib.dll en los directorios 3.0 o 3.5, incluso aunque 3.5 SP1 esté instalado ... por qué ¿La respuesta oficial de Microsoft estaría tan mal informada?


Necesitaba averiguar qué versión de .NET framework tenía en mi computadora, y todo lo que hice fue ir al panel de control y seleccionar la opción "Desinstalar un programa". Después de eso, ordené los programas por nombre y encontré el perfil de cliente de Microsoft .NET Framework 4.


Para un sistema operativo de 64 bits, la ruta sería:

HKEY_LOCAL_MACHINE/SOFTWARE/wow6432Node/Microsoft/NET Framework Setup/NDP/


Quería detectar la presencia de .NET versión 4.5.2 instalada en mi sistema, y ​​no encontré una solución mejor que ASoft .NET Version Detector .

Instantánea de esta herramienta mostrando diferentes versiones .NET:


Usando la biblioteca Signum.Utilities de SignumFramework (que puede usar de forma independiente), puede obtenerla fácilmente y sin tener que lidiar con el registro por sí mismo:

AboutTools.FrameworkVersions().ToConsole(); //Writes in my machine: //v2.0.50727 SP2 //v3.0 SP2 //v3.5 SP1


Vea Cómo: Determinar qué versiones de .NET Framework están instaladas (MSDN).

MSDN propone un ejemplo de función que parece hacer el trabajo para la versión 1-4. Según el artículo, la salida del método es:

v2.0.50727 2.0.50727.4016 SP2 v3.0 3.0.30729.4037 SP2 v3.5 3.5.30729.01 SP1 v4 Client 4.0.30319 Full 4.0.30319

Tenga en cuenta que para "versiones 4.5 y posteriores" hay otra función.