Если вы используете библиотеку-оболочку, такую как Code Pack (http://code.msdn.microsoft.com/WindowsAPICodePack), она проверяет версию за вас.Вы идете дальше и вызываете методы библиотеки, и она генерирует исключение PlatformNotSupportedException, если вы пытаетесь выполнить то, чего нет в ОС, когда вы работаете.
Вы также можете перехватить EntryPointNotFoundException, если вы используете P / Invoking в некоторых WindowsDLL.Это лучший подход, когда вы выполняете собственное взаимодействие, потому что функциональность может добавляться (через обновления и пакеты обновления) через несколько лет в ОС более низкого уровня.
С обоими из них вы можете кешировать какой-то флаг, который напоминает вам, что панели задач нет, или нет библиотек, или у вас нет каких-либо функций, чтобы сохранить удачный бросок броска и ловли.исключение.
Если вы настаиваете на том, чтобы проверить свою версию и увидеть, на какой ОС вы работаете, , пожалуйста, вспомните магию> =.Вы знаете, сколько существует кода, который проверяет версию точно XP SP2, а затем выводит окно с сообщением «Требуется XP SP2 или более поздняя версия»?A тонна .Фактически, именно поэтому основной версией для Win7 является 6 - так что все проверки кода на «равно 6» все равно будут работать.Не будь таким парнем.
if (Environment.OSVersion.Version.Major >= 6)
{
if (Environment.OSVersion.Version.Minor >= 1)
// Do Win7 thing
else
// Do Vista thing
}
else if (Environment.OSVersion.Version.Major >= 5)
// Do XP thing
Все старшие / второстепенные номера можно найти на http://msdn.microsoft.com/en-us/library/ms724832%28VS.85%29.aspx
Кейт