Читая ваш вопрос в буквальном смысле, я бы предложил загрузчик, который проверяет, а затем запускает ваше .Net приложение.
Почему? Потому что, если ваше приложение .Net использует определенную версию .Net (пример 3.0), а на компьютере установлена только версия 2.0, то ваше приложение будет аварийно завершено. Если у вас есть собственный загрузчик .exe, вы можете проверить реестр с помощью WinAPI (тысячи примеров уже существуют для этого), а затем запустить приложение .Net.
Альтернативой является проверка с помощью загрузчика, который опирается только на .Net 2.0 - эта версия довольно распространена в наши дни, шансы правильно исправленной и обновленной машины не иметь ее, довольно малы (шансы больше, если она машина перед WinXP). Более поздние версии .Net Framework совместимы в обратном направлении с v2.0 (хотя я не уверен, что уменьшенная природа платформы 4.0 CP все еще делает ее полностью совместимой с v2.0).