Папка XP System32 - DLL, волшебно заменяемый после удаления?

Нашим парням продаж установили внутреннее приложение, которое использует несколько пользовательских COM objects/DLLs сохраненный в System32. Я пытался заменить один из этих DLLs с более новой версией, которая хорошо работает после установки, но не после перезагрузки.

Вот интересная часть.

  1. Я нерегистрирую старый DLL в regsvr32/u myDll.dll
  2. Regsvr32 показывает диалоговый успех указания.
  3. Я копирую старый DLL в папку "сохранения" и переименовываю его к 20110412-myDll.dll_.
  4. Я удаляю оригинал из system32.
  5. Я поместил новый DLL в system32.
  6. Зарегистрируйте новый dll в regsvr32 myDll.dll
  7. Протестируйте новый DLL с VBScript - хорошо работает.
  8. И забавная часть
  9. Перезагрузка.
  10. Повторно выполненный тест vb сценарий. Это перестало работать.
  11. Посмотрите на DLL (который я заменил) в system32. Это было волшебно заменено старым DLL. Я проверил это с fc (двоичный файл выдерживает сравнение) с system32\myDll.dll и сохраненным 20110412-myDll.dll_.
  12. УДАЛИТЕ старый DLL. Проверьте, что это, на самом деле, уводят.
  13. Ищите все диски "myDll.DLL", включая системные папки. Проверьте, что нет никаких экземпляров старого DLL кроме переименованной версии в папке "сохранения".
  14. Перезагрузка
  15. Старый DLL, снова, волшебно вновь появился.

Учетная запись пользователя, которую я использую для этого, имеет полные права администратора к машине. Я не смог найти любой рабочий процесс, который должен сделать это, и наш отдел ИТ озадачен.

У кого-либо есть какие-либо предложения?

Обновление

Только для ада его, я запустил одну из машин в безопасном режиме, установил новый DLL и перезапустил снова. На этот раз изменение, кажется, работало, даже после последующего перезапуска. Странный.

Я могу сделать это на других машинах, которые показывают ту же проблему, и я ожидаю, что это будет работать, но я действительно хотел бы знать, какова проблема. Argh.

3
задан 21.03.2014, 21:08

2 ответа

Это наиболее вероятно проблема с Восстановлением системы. Попытайтесь отключить его прежде, чем заменить DLL.

Для большего количества информации посмотрите то, Что Восстановление системы в операционных системах Windows?

и http://support.microsoft.com/kb/310405

2
ответ дан 08.12.2019, 01:05

Система заменяет 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", расположенной под "Опциями".

1
ответ дан 08.12.2019, 01:05

Теги

Похожие вопросы