Como dijo que desea saber si está realmente instalado, creo que la mejor manera (a excepción del código específico de la versión en ejecución) es verificar la clave de registro llamada "Install". 0x1 significa que sí:
C:\>reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5"| findstr Install
Install REG_DWORD 0x1
InstallPath REG_SZ c:\WINNT\Microsoft.NET\Framework\v3.5\
Esto también pasa a ser el "Microsoft Recommended" official method.
WMI es otra posibilidad, pero parece poco práctico (¿Lento? Toma 2 min en mi C2D, SSD). Tal vez funcione mejor en su servidor:
C:\>wmic product where "Name like 'Microsoft .Net%'" get Name, Version
Name Version
Microsoft .NET Compact Framework 1.0 SP3 Developer 1.0.4292
Microsoft .NET Framework 3.0 Service Pack 2 3.2.30729
Microsoft .NET Framework 3.5 SP1 3.5.30729
Microsoft .NET Compact Framework 2.0 2.0.5238
Microsoft .NET Framework 4 Client Profile 4.0.30319
Microsoft .NET Framework 4 Multi-Targeting Pack 4.0.30319
Microsoft .NET Framework 2.0 Service Pack 2 2.2.30729
Microsoft .NET Framework 1.1 1.1.4322
Microsoft .NET Framework 4 Extended 4.0.30319
C:\>wmic product where "name like 'Microsoft .N%' and version='3.5.30729'" get name
Name
Microsoft .NET Framework 3.5 SP1
Aparte de estas Creo que la única manera de estar seguro al 100% es realmente ejecutar una aplicación de consola sencilla compilado la orientación de su versión del marco. Personalmente, considero que esto es innecesario y confío plenamente en el método de registro.
Finalmente, puede configurar un sitio de prueba de intranet accesible desde su servidor y olfatear el agente de usuario para determinar las versiones de .NET. Pero eso no es una solución de archivo por lotes, por supuesto.También vea doc here.
Gracias por la ayuda. Creo que verificar el directorio funcionará bien. Además, gracias por el recordatorio sobre el uso de% windir% –
Esta simple comprobación de directorio ya no es válida para detectar la versión. No hay un directorio v4.5 para .NET Framework 4.5 -http: //stackoverflow.com/questions/12070518/where-is-the-net-framework-4-5-directory – mvark
Vea este artículo de MSDN: [Cómo : Determine qué versiones de .NET Framework están instaladas] (https://msdn.microsoft.com/en-us/library/hh925568 (v = vs.110) .aspx # net_d). Explica que ya no puede confiar solo en el directorio. Para las versiones> = 4.0 necesita analizar el registro. – Matt