Поскольку вы сказали, что хотите знать, установлен ли он на самом деле, я думаю, что лучший способ (если не использовать код, специфичный для версии), - это проверять ключ реестра "Install" с убедительной уверенностью. 0x1 означает да:
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\
Это также официальный метод, рекомендуемый Microsoft .
WMI - еще одна возможность, но она кажется непрактичной (медленно? Занимает 2 минуты на моем C2D, SSD). Может быть, это лучше работает на вашем сервере:
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
Кроме этих, я думаю, что единственный способ быть на 100% уверенным - это запустить простое консольное приложение, скомпилированное для вашей версии платформы. Лично я считаю это ненужным и доверяю методу реестра.
Наконец, вы можете настроить тестовый сайт интрасети, доступный с вашего сервера и позволяющий пользовательскому агенту определить версии .NET. Но это, конечно, не пакетное решение. Также см. документ здесь .