Questa domanda non è tanto legata alla programmazione quanto all'implementazione.
Mi trovo a conversare molto con il gruppo della mia azienda il cui compito è mantenere i nostri server Windows di produzione e distribuire il nostro codice su di essi. Per motivi legali e di conformità, non ho visibilità diretta o controllo sui server, quindi l'unico modo in cui posso sapere quale versione (s) di .NET è installata su uno di essi è attraverso le indicazioni che do a quel gruppo.
Finora, tutti i metodi a cui riesco a pensare per sapere quali versioni sono installate (controlla gli strumenti di amministrazione corrispondenti a 1.1 o 2.0, controlla le voci nell'elenco "Installazione applicazioni", controlla l'esistenza del directory in c: \ Windows \ Microsoft.NET) sono difettose (ho visto almeno una macchina con 2.0 ma nessuna voce 2.0 in Strumenti di amministrazione - e quel metodo non dice nulla su 3.0+, l'elenco "Aggiungi / Rimuovi programmi" può non essere sincronizzato con la realtà e l'esistenza delle directory non significa necessariamente nulla).
Dato che generalmente ho bisogno di sapere che queste cose sono a posto in anticipo (scoprire che "oops, questo non ha tutte le versioni e i service pack di cui hai bisogno" non funziona bene con brevi finestre di manutenzione) e devo faccio il controllo "tramite proxy" poiché non riesco ad accedere direttamente ai server, qual è il modo infallibile per sapere quale versione (s) di .NET è installata su un server Windows di produzione? Preferibilmente un modo intrinseco per farlo utilizzando ciò che il framework installa poiché sarà più veloce e non avrà bisogno di qualche tipo di utilità per essere caricato e anche un metodo che fallirà sicuramente se i framework non sono installati correttamente ma hanno ancora file al loro posto (es. , c'è una directory e gacutil.exe è inserito lì ma quella versione del framework non è realmente "installata")
EDIT: In assenza di un buon modo intrinseco infallibile per farlo incorporato nel Framework (s), qualcuno conosce un programma buono, leggero, non richiesto per l'installazione in grado di scoprirlo? Posso immaginare che qualcuno possa scriverne facilmente uno, ma se ne esiste già uno, sarebbe ancora meglio.