Я не знаю, можете ли вы тестировать через silverlight, но вы не можете рассчитывать на useragent, потому что вы можете не найти версию .net в строке user-agent. Вы должны разработать компонент ActiveX или неуправляемое приложение (C ++, Delphi, VB6) для определения установленной версии (или нужной версии), а затем начать загрузку приложения.
Я разрабатываю приложение, в котором мне нужно было предоставить те же функции, что и вам. Поэтому я сначала тестирую через useragent (если у пользователя есть .NET, просто скачайте приложение). Если в пользовательском агенте отсутствует .NET, то пользователь загружает неуправляемое приложение для тестирования .NET (если не установлено .NET 4, оно указывает на URL-адрес загрузки).