Da Sie sagten, dass Sie wissen wollen, ob es tatsächlich installiert ist, denke ich, dass der beste Weg (abgesehen von der Ausführung von versionsspezifischem Code) darin besteht, den beruhigend benannten "Install"-Registrierungsschlüssel zu überprüfen. 0x1 bedeutet ja:
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\
Dies ist zufällig auch die von Microsoft empfohlene". offizielle Methode .
WMI ist eine weitere Möglichkeit, scheint aber unpraktisch zu sein (Langsam? Dauert 2 Minuten auf meiner C2D, SSD). Vielleicht funktioniert es besser auf Ihrem Server:
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
Abgesehen davon denke ich, dass der einzige Weg, um 100% sicher zu sein, tatsächlich eine einfache Konsolenanwendung ausgeführt wird, die für Ihre Framework-Version kompiliert wurde. Ich persönlich halte dies für unnötig und vertraue der Registry-Methode sehr gut.
Schließlich könnten Sie eine Intranet-Testseite einrichten, die von Ihrem Server aus erreichbar ist und den User Agent ausspäht, um die .NET-Versionen zu ermitteln. Aber das ist natürlich keine Batch-Datei-Lösung. Siehe auch Dokument hier .