Невозможно найти описание идентификатора события из источника

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

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

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

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

тестовый журнал messge

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

Ответ 1

Я получил эту ошибку после создания источника событий в журнале приложений из командной строки, используя "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.

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

Ответ 2

Перезагрузите систему!

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Вам понадобится DLL-сообщение, чтобы избежать проблемы, которую вы видите.

Ответ 6

У меня также возникла аналогичная проблема. После многих исследований я сделал следующее Я проверил шаги в соответствии с этой статьей 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 не соответствовало имени приложения в реестре. Я исправил это, и теперь он работает... Поэтому, если вы столкнулись с этой проблемой, пожалуйста, дважды проверьте свои записи в реестре.

Ответ 7

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

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

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

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

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

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

    • Используются значения идентификатора события двойной проверки (в моем случае это Qualifiers часть идентификатора события)
    • Сравнить сведения о мероприятии (выберите нужное событие, перейдите на вкладку "Сведения" и разверните "Система" ) с помощью рабочего примера

Ответ 8

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

Ответ 9

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

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

Ответ 10

Улучшая ответ @Alex, я предлагаю следующее:

            using (EventLog eventLog = new EventLog("Application"))
            {
                //You cannot be sure if the current identity has permissions to register the event source.
                try
                {
                    if (System.Web.HttpRuntime.AppDomainAppId != null)
                    {
                        eventLog.Source = System.Web.HttpRuntime.AppDomainAppId;
                    }
                    else
                    {
                        eventLog.Source = Process.GetCurrentProcess().ProcessName;
                    }
                }
                catch (SecurityException)
                {
                    eventLog.Source = "Application";
                }

                eventLog.WriteEntry("Log message example", EventLogEntryType.Information, 1000);
            }

Здесь важно не указывать параметр category. Если вы это сделаете, и это то же самое для так называемой магии .NET Runtime, то

Описание для идентификатора события & lt;...> из источника & lt;...> не найдено.

собирается появиться.

Ответ 11

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