Как заменить используемую DLL?
Обновления библиотеки динамических ссылок
Иногда необходимо заменить DLL на более новую версию.
Перед заменой DLL выполните проверку версии, чтобы убедиться, что вы заменяете более старую версию более новой. Можно заменить используемую DLL. Метод, используемый для замены используемых библиотек DLL, зависит от используемой операционной системы. В Windows XP и более поздних версиях приложения должны использовать изолированные приложения и параллельные сборки.
Нет необходимости перезагружать компьютер, если вы выполните следующие действия:
- Используйте функцию
MoveFileEx
чтобы переименовать заменяемую DLL. Не указывайте MOVEFILE_COPY_ALLOWED
и убедитесь, что переименованный файл находится на том же томе, что и исходный файл. Вы также можете просто переименовать файл в том же каталоге, задав ему другое расширение.
- Скопируйте новую DLL в каталог, который содержит переименованную DLL. Все приложения теперь будут использовать новую DLL.
- Используйте
MoveFileEx
с MOVEFILE_DELAY_UNTIL_REBOOT
чтобы удалить переименованную DLL.
Перед выполнением этой замены приложения будут использовать исходную библиотеку DLL, пока она не будет выгружена. После замены приложения будут использовать новую DLL. Когда вы пишете DLL, вы должны быть осторожны, чтобы убедиться, что она подготовлена к этой ситуации, особенно если DLL поддерживает глобальную информацию о состоянии или связывается с другими сервисами. Если DLL не подготовлена к изменению информации о глобальном состоянии или протоколов связи, обновление DLL потребует перезагрузки компьютера, чтобы все приложения использовали одну и ту же версию DLL.
Обновления исходной библиотеки Dynamic-Link (Windows)
Как заменить используемые файлы при перезагрузке Windows
В этой статье описывается другой метод, который вы можете использовать для замены файлов, используемых Windows. Этот метод использует реестр для замены файла при запуске, прежде чем файл будет доступен для Windows.
Следующие шаги демонстрируют, как заменить файл Win32k.sys в %SystemRoot%\System32
файлом Win32k.sys, расположенным в папке C: \Temp. Вы можете использовать варианты этого метода для замены любого файла, если ваша установка Windows является загрузочной.
- Запустите редактор реестра (Regedt32.exe).
- Найдите следующий ключ в реестре Windows:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
- Создайте новое значение, используя следующую информацию:
- Имя значения: PendingFileRenameOperations
- Тип данных:
REG_MULTI_SZ
- Значение данных: \??\c: \temp \win32k.sys!\??\C: \ WINNT \ system32 \win32k.sys
- Обратите внимание, что данные значения вводятся в две отдельные строки.
- Закройте редактор реестра.
- Перезагрузите компьютер.
Источник Как заменить используемые файлы при перезагрузке Windows