4

Я использую Microsoft Visual Studio 2008 (VC9) для компиляции проекта с файлом .dsw. У меня уже есть 2010 и предпочли бы использовать его, но, кажется, это ДСВ был построен за 2008Будет ли компилировать исполняемые файлы VS2008, совместимые с Windows 7

Я хотел бы собрать и произвести бинарного кода, который также совместим с Windows 7. Мои вопросы:

  • Если я скомпилирую с 2008 года, будет ли полученный двоичный код совместим с Windows 7? Я не уверен, в какой версии VS запускалась поддержка Windows 7.
  • или это не имеет ничего общего с версией VS и связано с Windows SDK? Если это так, могу ли я использовать VS2008 с новым SDK для Windows?

Может кто-то прояснить ситуацию.

ответ

2

VS2010 включает в себя версию 7.0 для Windows SDK и VS2008. Вам нужно Windows SDK v7.0, если вы хотите, чтобы ваше приложение использовало функции Windows 7, такие как списки переходов.

Поскольку у вас уже установлен VS2010, вы можете просто изменить свои файловые пути file/lib в VS2008, чтобы указать на Windows SDK v7.0 вместо стандартного, предоставленного с VS2008. Это предполагает, что вам нужна эта версия SDK.

Вам не нужен последний Windows SDK, если вы не планируете использовать последние функции Windows 7, такие как ленты и списки переходов. Если вы создаете приложение для OS с наименьшим общим знаменателем (то есть Windows XP), то в действительности вы должны быть в порядке, используя VS 2008 с настройками по умолчанию.

Другая проблема заключается в том, что если ваш код был первоначально написан до выхода Windows Vista, вполне вероятно, что он не будет работать должным образом в Windows 7, если он не запущен в режиме администратора, чего вы хотите избежать. Единственный способ исправить это - переписать большую часть вашего кода, чтобы избежать записи в определенные защищенные каталоги и избегать использования определенных API, требующих привилегий администратора.

5

Microsoft имеет отличную «историю» обратной совместимости, так что все, что вы компилируете с любой версией Visual Studio/Visual C++, будет совместимо с Windows 7. То же самое может не потребоваться в обратном порядке, т.е. если вы используете API, введенный в Windows 7, ваше приложение будет ошибочно при попытке запустить его в предыдущих версиях Windows.

Есть несколько вещей, чтобы рассмотреть, хотя:

  • Если проект был изначально написан на целевой Windows XP или более ранних версий, он может упасть в немилость UAC
  • Есть изменения в структуре каталогов (например как %systemdrive%\Documents and Settings становится %systemdrive%\Users), которые достаточно хорошо обрабатываются ссылкой, которую Windows 7 создает в корне `% systemdrive%, но вы можете ошибаться.
+1

В конечном счете, хотя, если вы желаете, чтобы убедиться, что ваш код будет работать на Win7 вам нужно будет проверить. Скорее всего, он запустится, но вы можете столкнуться с проблемами с UAC, виртуализацией реестра, манифестами и т. Д. Попробуйте загрузить Инструментарий совместимости приложений и запустить свою программу через него, что позволит выделить проблемные области, такие как запись в привилегированные области файлов и реестра. –

+0

«вы можете столкнуться с проблемами с UAC, виртуализацией реестра, манифестами» - только если вы не пытались написать свое программное обеспечение, чтобы не требовать административных прав с самого начала. – Rob