Вызывает ли последнее обновление для системы безопасности Visual Studio 2005 проблемы с библиотекой времени выполнения C при "горячем" исправлении сайтов клиентов
-
11-09-2019 - |
Вопрос
Как вам, возможно, известно, обновление для Visual Studio 2005 было автоматически обновлено на большинстве компьютеров на прошлой неделе.Это обновление включало новую версию библиотеки Visual c runtime library.В результате для любых двоичных файлов, созданных после обновления, также требуется новый распространяемый файл, установленный в клиентских системах.
Видишь http://support.microsoft.com/kb/971090/
А вот установщик для нового распространяемого:
Это прекрасно подходит для распространения новых двоичных файлов среди клиентов, я отправлю новый распространяемый файл вместе с программой установки, и все это будет работать.
Однако я действительно беспокоюсь о своей способности исправлять существующие сайты клиентов, если они обнаружат ошибку.В этом случае обычно я бы просто отправил dll или exe, которые были исправлены.
Однако, если я сделаю это сейчас, мне придется отправить этим клиентам новый распространяемый файл, и теперь я буду использовать две разные версии библиотеки времени выполнения c в одном исполняемом файле.
- Является ли это проблемой?
- Может ли это привести к сбою моего приложения?
- Что произойдет, если я выделю память в одной библиотеке dll, а затем освобожу ее в другой?Обычно это работает, если используется одна и та же библиотека времени выполнения выпуска.Я просмотрел наш код около 3 лет назад, исправляя это, но я не могу быть уверен, что нашел и исправил все вхождения.
- Выделение / освобождение в разных библиотеках dll все еще является проблемой?Теперь, в эпоху умных указателей и т.д., очень важно обеспечить соблюдение этого.
- Могу ли я контролировать, от какой версии библиотеки времени выполнения я зависю, изменяя манифесты?
Буду признателен за любые указания или советы.
Обновленный: Я только что заметил этот вопрос VC++:KB971090 и выбор зависимостей Visual C Runtime DLL Это очень похоже, но мой вопрос больше связан с использованием двух разных версий среды выполнения в одном исполняемом файле.
Решение
Номер версии, указанный в файле / ресурсе манифеста приложения, указывает только минимальную версию, необходимую для запуска приложения.Поведение загрузчика по умолчанию заключается в том, чтобы сначала проверить папку WINDOWS \ WinSxS на наличие идентичной версии или заменяющей ее версии зависимости, указанной в манифесте приложения, и использовать эту версию независимо от того, была ли предоставлена с приложением частная сборка, содержащая зависимость.(См. http://msdn.microsoft.com/en-us/library/aa375674 (ПРОТИВ 85).aspx).
Так что, скорее всего, ваши старые двоичные файлы в любом случае также будут использовать последнюю версию библиотеки Microsoft run time library.Попробуйте запустить выпускную сборку вашего приложения (созданную до обновления Visual Studio) на полностью исправленном компьютере и используйте process Explorer, чтобы посмотреть, какие библиотеки DLL оно загружает.Единственная проблема заключается в том, что вам придется включить в свой патч новый распространяемый во время выполнения файл.
Если вы все еще беспокоитесь, вы можете попробовать метод, описанный здесь: http://tedwvc.wordpress.com/2009/08/10/avoiding-problems-with-vc2005-sp1-security-update-kb971090/
Другие советы
Да, вам не придется слишком долго ждать, чтобы увидеть проблемы, используя две библиотеки времени выполнения.
Если вы выделите память с помощью среды выполнения и попытаетесь освободить ее с помощью другой, ваше приложение выйдет из строя.Это есть и будет оставаться проблемой.
Только среда выполнения, которая зарезервировала память, может отслеживать это.Другая среда выполнения не может знать, сколько памяти вы зарезервировали.
Возможно, вы захотите прочитать это, действительно хороший пост о связывании с msvcrt.dll .
Я слышал (только по слухам), что если в манифесте указаны две версии CRT, которые отличаются только незначительным номером редакции, то приложение в конечном итоге использует только более новую версию во время выполнения.Т.е. вы не сталкиваетесь с проблемами с несколькими ЭЛТ.
Это всего лишь слухи, и я хотел бы услышать конкретный ответ на этот вопрос.
Смотрите также: Обновления безопасности Visual Studio 2005 и версии CRT DLL в манифесте