2012-09-28 3 views
5

Моя программа содержит несколько DLL, которые зависят от MSVCP100.dll и MSVCR100.dll, в Win7 моя программа запускается без каких-либо проблем, однако в Win8 ей не удалось найти эти две библиотеки. Я заметил, что в Win8 не установлен VCRedist по умолчанию, поэтому, видимо, мне нужно установить VCRedist для включения моей программы.Как проверить, нужно ли устанавливать VCRedist?

Вопрос в том, как проверить, установлен ли VCRedist?

Похоже, мы сможем сделать это, выполнив поиск в реестре [1][2]. Однако кажется, что существует множество версий VCRedist (VC2012,2010,2008,2005 ...), поэтому мне нужно пройти через все эти разделы реестра?

ответ

2

Если вы только запустите установщик VCRedist (который вы должны отправить с вашей программой, во всяком случае), он выполнит эту работу за вас. Игры «попробуйте» установить DirectX одинаково.

+0

Это не идеальный сценарий (плохой UX), но он самый защитный. –

9

Поскольку ваши библиотеки DLL зависят от MSVCR100.dll, вы хотите найти VCRedist для VC 2010

Число после «MSVCR» или «MSVCP» является внутренняя версия Visual Studio x10 - http://en.wikipedia.org/wiki/Microsoft_Visual_Studio#Version_history перечислены значения для различных версий.

Для Visual Studio 2010 вы можете определить, установлена ​​ли среда выполнения, установив значение «Установленное» HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86 для 32-разрядных приложений/DLL и HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x64 для 64-разрядных приложений/DLL.

Для Visual Studio 2010 и предыдущих версий http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx имеет хорошее объяснение методов определения времени установки.

С Visual Studio 2012 все изменилось, и ключ VCRedist больше не существует. Вместо этого вы можете посмотреть значение Installed значения ключа reg (для 32-битных приложений) Software\Microsoft\VisualStudio\11.0\VC\Runtimes\x86

+0

Это не подходит, если вы пытаетесь проверить машину без Visual Studio – XtianGIS

Смежные вопросы