Журнал событий.Выгрузить EventMessageFile (DLL) - PullRequest
1 голос
/ 12 января 2011

Я устанавливаю службу NT и добавляю информацию о файле 'message.dll' в реестр для EvenLog.HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Application \ MyApp EventMessageFile = C: \ message.dll

Запустите службу и просмотрите информационные сообщения журнала службы в программе просмотра EventLog.Работает нормально.

Далее удалите службу и попробуйте удалить файл message.dll.Не удалось!Я получаю сообщение «Доступ запрещен», потому что эта DLL загружена.

Мой вопрос: Как правильно удалить / выгрузить / удалить message.dll в моем случае?

Большое спасибо, Дмитрий

Ответы [ 2 ]

1 голос
/ 12 января 2011

Вы останавливаете свою службу перед ее удалением? Вы закрываете программу просмотра EventLog перед удалением вашего сервера? Это две типичные ошибки, которые могут привести к тому, что message.dll останется в использовании.

Если у вас все-таки возникнет проблема, я бы порекомендовал использовать Process Explorer , чтобы найти процесс, который удерживает dll в использовании. Ctrl + F или меню «Найти» / «Найти дескриптор или DLL ...» можно использовать для поиска процессов, использующих DLL.

0 голосов
/ 30 ноября 2018

Windows Event Viewer держит DLL открытой для чтения сообщений.

Однако - это не единственное, что может читать журнал событий. Программное обеспечение RMM, такое как ConnectWise, Naverisk и т. Д., Также отслеживает журнал событий и может помешать вашему программному обеспечению обновить заблокированный файл EventMessageFile .llll.

Когда используется стороннее программное обеспечение, просто невозможно закрыть MMC.exe, как в принятом ответе.

Я нашел два обходных пути для этого:

  1. Прекратите использовать систему EventMessageFile и просто используйте вместо этого встроенный EventCreate.exe в качестве источника

  2. Используйте подсистему Restart Manager для агрессивного перезапуска сторонней службы RMM, как описано в Средство просмотра событий Windows блокирует мой EXE-файл

...