Как проверить, является ли текущая ОС Windows 7? - PullRequest
0 голосов
/ 30 сентября 2010

Я разрабатываю приложение для Windows (это зависит от DirectShow, поэтому нет Linux и т. Д.).

Пока оно будет работать в XP и Windows 7 (без поддержки Vista).

Однако есть фрагмент кода, который ведет себя совершенно по-разному в XP или Windows 7, поэтому мне нужно знать, в какой системе я нахожусь, чтобы обойти эту проблему.Поскольку я не поддерживаю Vista - и даже если бы я это сделал, я думаю, различий не будет - мне все равно, будут ли Vista и 7 идентифицированы как одна и та же ОС, хотя я бы предпочел, чтобы их не было.

На всякий случай я занимаюсь разработкой на c ++ и не хочу поддерживать два разных исполняемых файла, и я бы предпочел независимый от языка способ сделать это.

Итак, мой вопрос: Как правильно (tm) проверить во время выполнения, какая версия Windows работает?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2010

Статья , на которую ссылается Навин, имеет важное замечание, которое также может иметь отношение к вашему сценарию:

Идентификация текущей операционной системы обычно не лучший способопределить, присутствует ли конкретная функция операционной системы.Это связано с тем, что в операционной системе могут быть добавлены новые функции в распространяемой DLL.Вместо использования GetVersionEx для определения платформы или номера версии операционной системы, проверьте наличие самой функции.

Проверка определенной функции может быть выполнена с помощью IsOSФункция .

GetVersionEx может использоваться для получения версии ОС.Однако имейте в виду, что ОС будет различаться по-разному в зависимости от того, действует режим совместимости или нет.

2 голосов
/ 30 сентября 2010

См. Эту статью на MSDN , чтобы получить версию ОС программно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...