Aquí se hizo una pregunta similar , pero era específica de .NET 3.5. Específicamente, estoy buscando lo siguiente:
- ¿Cuál es la forma correcta de determinar qué versiones de .NET Framework y service packs están instalados?
- ¿Hay una lista de claves de registro que se pueden usar?
- ¿Hay alguna dependencia entre las versiones de Framework?
.net
installation
version-detection
Scott Dorman
fuente
fuente
Respuestas:
El registro es la forma oficial de detectar si está instalada una versión específica del Framework.
Las claves de registro que se necesitan cambiar según la versión de Framework que esté buscando:
Generalmente buscas:
excepto .NET 1.0, donde el valor es una cadena (
REG_SZ
) en lugar de un número (REG_DWORD
).La determinación del nivel del service pack sigue un patrón similar:
Como puede ver, determinar el nivel de SP para .NET 1.0 cambia si está ejecutando 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 la cadena en cualquiera de estas claves tiene un formato de #, #, ####, #. El último # es el nivel de Service Pack.
Si bien no solicité explícitamente esto, si desea conocer el número de versión exacto de Framework, usaría estas claves de registro:
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 en sí, que representa el número de versión.
Finalmente, si observa las dependencias, .NET 3.0 agrega funcionalidad adicional a .NET 2.0, por lo que tanto .NET 2.0 como .NET 3.0 deben evacuarse como instalados para decir correctamente que .NET 3.0 está instalado. Del mismo modo, .NET 3.5 agrega una 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
v4.5
clave en el registro si está instalado .NET 4.5. En su lugar, debe verificar si laHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
clave contiene un valor llamadoRelease
. Si este valor está presente, se instala .NET 4.5; de lo contrario, no lo está. Más detalles se pueden encontrar aquí y aquí .fuente
Hay una respuesta oficial de Microsoft a esta pregunta en el siguiente artículo de la base de conocimiento:
ID del 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 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 aunque esté instalado 3.5 SP1 ... por qué ¿La respuesta oficial de Microsoft estaría tan mal informada?
fuente
La versión beta de Framework 4 se instala en una clave de registro diferente.
fuente
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP", true)
aRegistry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP")
para evitar una excepción de seguridad en usuarios que no sean administradores.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 que muestra diferentes versiones de .NET:
fuente
Enumerar las subclaves de
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
. Cada subclave es una versión .NET . Debe tener unInstall=1
valor si está presente en la máquina, un valor de SP que muestra el paquete de servicio y unMSI=1
valor 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).fuente
Para un sistema operativo de 64 bits, la ruta sería:
fuente
Wow6432Node
clave de registro es parte del reflector de registro WOW64, que refleja ciertas claves y valores entre las vistas de registro de 64 bits y 32 bits. No debería haber necesidad de acceder a esta clave directamente ya que el registro maneja automáticamente la redirección y la duplicación.Actualización para .NET 4.5.1
Ahora que .NET 4.5.1 está disponible, debe verificarse el valor real de la clave denominada Release 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 aquí, este valor es 378675 en Windows 8.1.
fuente
Hay una herramienta GUI disponible, ASoft .NET Version Detector , que siempre ha demostrado ser altamente confiable. Puede crear archivos XML especificando el nombre del archivo de salida XML en la línea de comando.
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.
fuente
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é Microsoft .NET Framework 4 Client Profile.
fuente
Aquí hay un script de PowerShell para obtener versiones instaladas de .NET Framework
Fue escrito en base a Cómo: determinar qué versiones de .NET Framework están instaladas . Utilice la función THE Get-FrameworkVersion () para obtener información sobre las versiones instaladas de .NET Framework.
fuente
Usando la biblioteca Signum.Utilities de SignumFramework (que puede usar de forma independiente), puede obtenerla de manera agradable y sin tener que lidiar con el registro usted mismo:
fuente
Consulte 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, el resultado del método es:
Tenga en cuenta que para "versiones 4.5 y posteriores" hay otra función.
fuente
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:
En cmd, escriba este comando
Esto proporciona la última versión de NET Framework instalada.
También se puede probar Raymond.cc Utilities para lo mismo.
fuente
cmd
me daERROR: Description = Invalid namespace
.ERROR: Description = Invalid namespace