Описание для идентификатора события из источника не может быть найдено - PullRequest
53 голосов
/ 05 августа 2010

Когда я записываю журнал в журнал событий Windows, я получаю событие ниже, какова основная причина этого сообщения и как я могу это исправить?Большое спасибо

Не найдено описание для события с кодом 51001 из источника RRWS.Либо компонент, который вызывает это событие, не установлен на локальном компьютере, либо установка повреждена.Вы можете установить или восстановить компонент на локальном компьютере.

Если событие возникло на другом компьютере, отображаемая информация должна была быть сохранена вместе с событием.

Следующая информация была включена всобытие:

сообщение журнала теста

ресурс сообщения присутствует, но сообщение не найдено в таблице строк / сообщений

Ответы [ 10 ]

27 голосов
/ 24 января 2012

Я получил эту ошибку после создания источника событий в журнале приложений из командной строки с помощью «EventCreate».Эта команда создает новый ключ в: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application

Если вы посмотрите на ключ, который был создан (например, SourceTest), будет строковое значение с именем EventMessageFile, которое для меня было установлено на %SystemRoot%\System32\EventCreate.exe.

Измените это на c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll

Удалите значения CustomSource и TypesSupported.

Это должно остановить "Описание для идентификатора события ....""сообщение.

17 голосов
/ 18 сентября 2015

У моего друга была точно такая же проблема.Он перепробовал все описанные варианты, но ничего не получалось.После многих исследований, и описания Microsoft , он решил перезагрузить систему.Это сработало !!

Кажется, операционная система не во всех случаях обновляет список зарегистрированных источников событий.Только после перезапуска вы можете быть уверены, что источники событий зарегистрированы правильно.

Вывод: Перезагрузите систему!

13 голосов
/ 19 октября 2017

Как насчет решения реального мира.

Если все, что вам нужно, это быстрый и грязный способ записи чего-либо в журнал событий без регистрации «пользовательских источников» (требуется администраторправа) или предоставляя «файлы сообщений» (требует работы и головной боли), просто сделайте это:

EventLog.WriteEntry(
    ".NET Runtime", //magic
    "Your error message goes here!!",
    EventLogEntryType.Warning,
    1000); //magic

Таким образом, вы будете писать в существующий журнал «Приложения» без раздражающего «Описание для события»ID 0 не может быть найден "

Если вы хотите объяснить" волшебную "часть, я написал об этом в блоге здесь

11 голосов
/ 05 августа 2010

Вам необходимо создать источник события и файл сообщения для него.Код выглядит примерно так:

var data = new EventSourceCreationData("yourApp", "Application");
data.MessageResourceFile = pathToYourMessageFile;
EventLog.CreateEventSource(data);

Тогда вам нужно будет создать файл сообщения .Есть также эта статья , которая объясняет вещи (я не читал все это, но это кажется довольно полным).

5 голосов
/ 16 декабря 2014

Используйте PowerShell для создания журнала событий и источника:

New-EventLog -LogName MyApplicationLog `
    -Source MySource `
    -MessageResourceFile C:\windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll

Вам понадобятся сообщения dll, чтобы избежать возникшей проблемы.

3 голосов
/ 02 сентября 2017

Я также наткнулся на это - хотя вызвано еще одной возможностью: идентификатор события (который был «запутан» в #define) устанавливал серьезность в ошибка ( два старших бита, как указано в Идентификаторы событий ). Поскольку Event Viewer отображает идентификатор события (младшие 16 бит), совпадения не может быть ...

Для справки, я собрал набор советов, основанных на моих собственных исследованиях, при поиске и устранении неисправностей:

  1. Если ваша запись в журнале не заканчивается на ", ресурс сообщения присутствует, но сообщение не найдено в таблице строк / сообщений " (в отличие от оригинальный вопрос):

    • Означает, что вам не хватает информации реестра
    • Перепроверьте имя источника событий и ключи реестра
  2. Если вам нужно добавить / отредактировать информацию реестра, не забудьте:

    • Перезапуск Просмотр событий (как указано в пункте 6 KB166902 , а также @JotaBe)
    • Если это не поможет, перезапустите Журнал событий Windows / EventLog служба (или перезапустите систему, как намекнул @BrunoBieri).
  3. Если вы не не хотите создавать собственный ресурс DLL, учтите, что общедоступные файлы сообщений о событиях имеют некоторые оговорки:

    • Они содержат большой массив идентификаторов, который пытается охватить большинство случаев
      • .NET EventLogMessages.dll (как намекнул @Matt) увеличивается до 0xFFFF
      • Windows EventCreate.exe «только» увеличивается до 0x3E9
    • Каждая запись содержит %1
      • Это означает, что только первая строка будет отображена
      • Все строки, переданные в ReportEvent, все еще можно проверить, просмотрев детали события (выберите нужное событие, перейдите на вкладку Подробно и разверните EventData )
  4. Если вы все еще получаете "1089 * не может быть найдено " в ваших зарегистрированных событиях (оригинальный вопрос):

    • Перепроверьте идентификатор события значения используются (в моем случае это были квалификаторы часть идентификатора события)
    • Сравните сведения о событии (выберите нужное событие, перейдите на вкладку Подробно и разверните Система ) с рабочим примером
2 голосов
/ 17 сентября 2013

Я тоже сталкивался с подобной проблемой. После долгих исследований я сделал следующее Я проверил шаги согласно этой статье http://www.codeproject.com/Articles/4166/Using-MC-exe-message-resources-and-the-NT-event-lo Казалось, все на месте. За исключением одной вещи ... я понял это, когда наткнулся на этот MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/aa363661(v=vs.85).aspx

Как говорит последний абзац .. 'Если приложение вызывает RegisterEventSource и передает имя источника, которое невозможно найти в реестре, служба регистрации событий по умолчанию использует журнал приложений. Однако из-за отсутствия файлов сообщений программа просмотра событий не может сопоставить какие-либо идентификаторы событий или категории событий со строкой описания и отображает ошибку. По этой причине вам следует добавить в реестр уникальный источник событий для вашего приложения и указать файл сообщений. ' Поэтому имя моего приложения в RegisterEventSource не совпадает с именем приложения в реестре. Я исправил это, и теперь это работает ... Поэтому, пожалуйста, дважды проверьте записи в реестре, если вы столкнулись с этой проблемой.

1 голос
/ 13 марта 2015

Для меня проблема заключалась в том, что мой целевой профиль случайно был установлен на «.Net Framework 4 Client profile».Когда я перестроил службу с помощью «.Net Framework 4», проблема исчезла!

0 голосов
/ 28 октября 2016

Если вы откроете программу просмотра журнала событий до того, как будет создан источник событий, например, при установке службы, вы получите это сообщение об ошибке. Вам не нужно перезагружать ОС: вам просто нужно закрыть и открыть средство просмотра событий.

ПРИМЕЧАНИЕ. Я не предоставляю файл пользовательских сообщений. При создании источника событий используется конфигурация по умолчанию , как показано в ответе Мэтта .

0 голосов
/ 05 августа 2010

Это обычно вызывается программой, которая записывает в журнал событий, а затем удаляется или перемещается.

...