Как заменить используемую 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