Использование подхода, такого как проверка номера версии, на мой взгляд, неверно. Я читал статью о передовом опыте (потерял ссылку), и в нем четко говорилось, что никогда не используйте эти номера версий, которые Microsoft может изменить в будущих обновлениях для определения версии Windows.
Windows Vista - это версия 6.0, а Windows 7 - 6.1, которая в идеале должна была быть 7. Это совсем не надежно.
Лучший способ - проверить наличие функций, характерных для каждой версии Windows. Например, в Windows Vista / 7 Home Basic вы не найдете опыт работы с аэро. Точно так же, как и в конечном итоге, поставляется с BitLocker и т. Д., А для дома премиум-класса - нет.
MSDN подробно расскажет, какие функции доступны в каждой версии и как запросить, доступна ли она. На основании этого вы можете решить, что является базовой версией Windows. Также вы можете использовать запрос информации о версии из системных библиотек для определения точной даты сборки Windows и т. Д.
В Windows 7 были добавлены новые DLL в system32 по сравнению с Vista. Поэтому, когда вы будете искать конкретные библиотеки DLL, вы будете знать, является ли их система Windows 7 или старые версии, такие как xp / vista.