Нашим парням продаж установили внутреннее приложение, которое использует несколько пользовательских COM objects/DLLs сохраненный в System32. Я пытался заменить один из этих DLLs с более новой версией, которая хорошо работает после установки, но не после перезагрузки.
Вот интересная часть.
fc
(двоичный файл выдерживает сравнение) с system32\myDll.dll и сохраненным 20110412-myDll.dll_. Учетная запись пользователя, которую я использую для этого, имеет полные права администратора к машине. Я не смог найти любой рабочий процесс, который должен сделать это, и наш отдел ИТ озадачен.
У кого-либо есть какие-либо предложения?
Обновление
Только для ада его, я запустил одну из машин в безопасном режиме, установил новый DLL и перезапустил снова. На этот раз изменение, кажется, работало, даже после последующего перезапуска. Странный.
Я могу сделать это на других машинах, которые показывают ту же проблему, и я ожидаю, что это будет работать, но я действительно хотел бы знать, какова проблема. Argh.
Это наиболее вероятно проблема с Восстановлением системы. Попытайтесь отключить его прежде, чем заменить DLL.
Для большего количества информации посмотрите то, Что Восстановление системы в операционных системах Windows?
Система заменяет DLL файлом в C:\Windows\System32\DLLCache
Windows File Protection. Проверьте, что Система входит в систему Event Viewer (в Средствах администрирования) для этого события:
Event ID: 64001 Source: Windows File Protection Description: File replacement was attempted on the protected system file C:\Windows\System32\myDll.DLL . This file was restored to the original version to maintain system stability. The file version of the system file is x.x:x.x.
Попытайтесь удалить файл DLL, хранивший в DLLCache
, замените DLL в System32
снова, затем перезагрузите компьютер
Править: Проверьте журналы в свое защитное программное обеспечение, начиная с некоторой системы контроля программ обеспечения безопасности, DLLs и блок пытаются заменить файл. Можно также попытаться использовать Монитор Процесса для проверки, какая программа заменяет DLL, особенно во время запуска с функцией "Enable Boot Logging", расположенной под "Опциями".