Eventlog что это за служба

Что такое eventlog.exe? Это безопасно или вирус? Как удалить или исправить это

Что такое eventlog.exe?

eventlog.exe это исполняемый файл, который является частью Windows NT Server разработанный Microsoft, Версия программного обеспечения для Windows NT 3.1 NT 3.1: 1.0.0.0 обычно 77188 в байтах, но у вас может отличаться версия.

Eventlog что это за служба. Смотреть фото Eventlog что это за служба. Смотреть картинку Eventlog что это за служба. Картинка про Eventlog что это за служба. Фото Eventlog что это за служба

Является ли eventlog.exe безопасным, или это вирус или вредоносная программа?

Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, в случае с Eventlog.exe его путь будет примерно таким: C: \ Program Files \ Microsoft \ Windows NT Server \ eventlog.exe.

Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.

Самые важные факты о eventlog.exe:

Если у вас возникли какие-либо трудности с этим исполняемым файлом, вы должны определить, заслуживает ли он доверия, перед удалением eventlog.exe. Для этого найдите этот процесс в диспетчере задач.

Найти его местоположение и сравнить размер и т. Д. С приведенными выше фактами

Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус eventlog.exe, необходимо скачайте и установите приложение полной безопасности, как это, Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.

Могу ли я удалить или удалить eventlog.exe?

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

Однако, если это не вирус и вам нужно удалить eventlog.exe, вы можете удалить Windows NT Server с вашего компьютера, используя его деинсталлятор. Если вы не можете найти его деинсталлятор, то вам может потребоваться удалить Windows NT Server, чтобы полностью удалить eventlog.exe. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.

Распространенные сообщения об ошибках в eventlog.exe

Наиболее распространенные ошибки eventlog.exe, которые могут возникнуть:

Как исправить eventlog.exe

Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.

Чтобы помочь вам проанализировать процесс eventlog.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.

Обновлен декабрь 2021:

Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:

Загрузите или переустановите eventlog.exe

Вход в музей Мадам Тюссо не рекомендуется загружать замещающие exe-файлы с любых сайтов загрузки, так как они могут сами содержать вирусы и т. д. Если вам нужно скачать или переустановить eventlog.exe, мы рекомендуем переустановить основное приложение, связанное с ним. Windows NT Server.

Технические особенности Windows NT

Информация об операционной системе

Ошибки eventlog.exe могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:

Источник

Event Log Класс

Определение

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Обеспечивает взаимодействие с журналами событий Windows.

Примеры

начиная с Windows Vista, это приложение необходимо запускать от имени администратора.

Комментарии

EventLogпозволяет получать доступ к журналам событий Windows и настраивать их, а также записывать сведения о важных событиях программного обеспечения или оборудования. С помощью EventLog можно выполнять чтение из существующих журналов, записывать записи в журналы, создавать или удалять источники событий, удалять журналы и отвечать на записи журнала. При создании источника событий можно также создать новые журналы.

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

Существует три журнала событий по умолчанию: приложение, система и безопасность. Журнал безопасности доступен только для чтения. Другие приложения и службы, которые вы устанавливаете, например Active Directory, могут иметь дополнительные журналы событий.

начиная с Windows Vista, учетные данные пользователя определяются контролем учетных записей (UAC). Члену встроенной группы «Администраторы» присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, обращающийся к журналу безопасности, необходимо сначала повысить свои учетные данные от обычного пользователя до администратора. Это можно сделать при запуске приложения, открыв контекстное меню для приложения (если вы используете мышь, щелкните правой кнопкой мыши значок приложения) и укажите, что требуется запустить от имени администратора.

Можно использовать EventLog для создания пользовательских журналов событий, которые можно просмотреть с помощью Просмотр событий сервера. Используйте RegisterDisplayName метод, чтобы отобразить локализованное имя для журнала событий в Просмотр событий. Используйте ModifyOverflowPolicy метод, чтобы настроить поведение журнала событий при достижении максимального размера журнала.

Для чтения из журнала событий укажите имя журнала ( Log свойство) и имя компьютера сервера ( MachineName свойство для журнала событий. Если не указать имя компьютера сервера, предполагается, что используется локальный компьютер «.». Нет необходимости указывать источник события ( Source свойство), поскольку источник необходим только для записи в журналы. EntriesСвойство автоматически заполняется списком записей журнала событий.

Для записи в журнал событий укажите или создайте источник события ( Source свойство). Для создания нового источника событий необходимо иметь учетные данные администратора на компьютере. Источник событий регистрирует приложение в журнале событий в качестве допустимого источника записей. Можно использовать источник событий для записи только в один журнал за раз. SourceСвойство может быть любой случайной строкой, но имя должно отличаться от других источников на компьютере. Источником события обычно является имя приложения или другая идентифицирующая строка. При попытке создать повторяющееся Source значение возникает исключение. Однако один журнал событий может быть связан с несколькими источниками.

Если источник событий для журнала событий, связанного с EventLog экземпляром, не существует, создается новый источник событий. чтобы создать источник событий в Windows Vista и более поздних версий или Windows Server 2003, необходимо иметь учетные данные администратора.

Это требование связано с тем, что необходимо выполнить поиск всех журналов событий, включая журналы безопасности, чтобы определить, является ли источник события уникальным. начиная с Windows Vista пользователи не имеют разрешения на доступ к журналу безопасности; Поэтому SecurityException создается исключение.

Для создания или удаления источника события требуется синхронизация базового кода с помощью именованного мьютекса. Если приложение с высоким уровнем привилегий блокирует именованный мьютекс, попытка создать или удалить источник события приведет к тому, что приложение перестанет отвечать, пока блокировка не будет снята. Чтобы предотвратить возникновение этой проблемы, никогда не предоставляйте UnmanagedCode разрешение на ненадежный код. Кроме того, UnmanagedCode разрешение, потенциально разрешающее обход других разрешений, может быть предоставлено только высоко доверенному коду.

Нет ничего защищать приложение от записи в качестве зарегистрированного источника. Если приложению предоставлено Write разрешение, оно может записывать события для любого допустимого источника, зарегистрированного на компьютере.

Используйте WriteEvent методы и WriteEntry для записи событий в журнал событий. Для записи событий необходимо указать источник события. перед записью первой записи с источником необходимо создать и настроить источник события.

Создайте новый источник событий во время установки приложения. Это позволяет операционной системе обновлять свой список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила список источников событий и вы пытаетесь написать событие с новым источником, операция записи завершится ошибкой. Новый источник можно настроить с помощью EventLogInstaller объекта или CreateEventSource метода. Для создания нового источника событий необходимо иметь учетные данные администратора на компьютере.

Каждый источник может записывать только один журнал событий; Однако приложение может использовать несколько источников для записи в несколько журналов событий. Например, приложению может потребоваться несколько источников, настроенных для различных журналов событий или разных файлов ресурсов. Чтобы изменить сведения о конфигурации существующего источника, необходимо удалить источник, а затем создать его с новой конфигурацией. Если другие приложения или компоненты используют существующий источник, создайте новый источник с обновленной конфигурацией вместо удаления существующего источника.

Вы можете зарегистрировать источник событий в локализованных ресурсах для категории событий и строк сообщений. Приложение может записывать записи журнала событий с помощью идентификаторов ресурсов вместо указания фактических строковых значений. EventLogInstaller EventSourceCreationData Дополнительные сведения о настройке источника с помощью файлов ресурсов см. в разделе классы и.

Если приложение записывает строковые значения непосредственно в журнал событий, не нужно задавать свойства файла ресурсов для источника. Источник должен быть настроен либо для записи локализованных записей, либо для записи прямых строк. Если приложение записывает записи, используя как идентификаторы ресурсов, так и строковые значения, необходимо зарегистрировать два отдельных источника. Например, можно настроить один источник с файлами ресурсов, а затем использовать этот источник в WriteEvent методе для записи записей, использующих идентификаторы ресурсов, в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в WriteEntry методе для записи строк непосредственно в журнал событий с помощью этого источника.

При записи событий необходимо по крайней мере указать либо строку сообщения, либо идентификатор ресурса для строки сообщения. Другие свойства событий являются необязательными. Примеры необязательных параметров событий включают следующее.

Можно задать, EventLogEntryType чтобы указать значок, отображаемый Просмотр событий для записи.

Можно указать идентификатор категории для события, если приложение использует категории для фильтрации событий.

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

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

Список начальных значений свойств для экземпляра EventLog см. в разделе EventLog конструктор.

Конструкторы

Инициализирует новый экземпляр класса EventLog. Не связывает экземпляр с каким-либо журналом.

Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на локальном компьютере.

Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на указанном компьютере.

Инициализирует новый экземпляр класса EventLog. Связывает экземпляр с журналом на указанном компьютере и создает или присваивает заданный источник классу EventLog.

Свойства

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

Возвращает объект IContainer, который содержит коллекцию Component.

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.

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

Возвращает содержимое журнала событий.

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

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

Возвращает понятное имя журнала событий.

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

Возвращает или устанавливает максимальный размер журнала событий в килобайтах.

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

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

Получает или задает ISite объекта Component.

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

Возвращает или задает объект, используемый для маршалинга вызовов обработчика событий, возникающих в результате события записи в EventLog.

Методы

Начинает инициализацию класса EventLog, используемого в форме или используемого другим компонентом. Инициализация происходит во время выполнения.

Удаляет все записи из журнала событий.

Закрывает журнал событий и удаляет дескрипторы чтения и записи.

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

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

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

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

Удаляет журнал событий с локального компьютера.

Удаляет журнал событий с указанного компьютера.

Удаляет регистрацию источника событий из журнала событий на локальном компьютере.

Удаляет регистрацию источника событий приложения с указанного компьютера.

Освобождает все ресурсы, занятые модулем Component.

Освобождает неуправляемые ресурсы, используемые журналом EventLog, и при необходимости освобождает также управляемые ресурсы.

Завершает инициализацию класса EventLog, используемого в форме или другим компонентом. Инициализация происходит во время выполнения.

Определяет, равен ли указанный объект текущему объекту.

Определяет наличие журнала на локальном компьютере.

Определяет наличие журнала на заданном компьютере.

Выполняет поиск всех журналов событий на локальном компьютере и создает массив объектов EventLog, содержащих список.

Выполняет поиск всех журналов событий на заданном компьютере и создает массив объектов EventLog, содержащих список.

Служит хэш-функцией по умолчанию.

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

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.

Возвращает объект Type для текущего экземпляра.

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

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

Создает неполную копию текущего объекта Object.

Создает неполную копию текущего объекта MarshalByRefObject.

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

Определяет локализованное имя для журнала событий, которое отображается в «Просмотре событий» сервера.

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

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

Возвращает объект String, содержащий имя Component, если оно есть. Этот метод не следует переопределять.

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

Вносит в журнал событий следующие записи с заданным текстом сообщения: ошибка, предупреждение, сведения, аудит отказов или аудит успехов.

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

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

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

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

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

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

Вносит в журнал событий запись с заданным текстом сообщения и идентификатором события и категорией (которые определяется приложением), используя указанный зарегистрированный источник событий. С помощью category осуществляется фильтрация событий журнала в компоненте «Просмотр событий».

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

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

Вносит локализованные записи в журнал событий.

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

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

События

Возникает при удалении компонента путем вызова метода Dispose().

Происходит при внесении записи в журнал событий на локальном компьютере.

Источник

Журнал событий (Event Logging)


Win32: централизованное протоколирование событий


Автор: Серебряков Алексей (Smooky)
QUIBECK INC.
Источник: RSDN Magazine #3-2007

Опубликовано: 14.11.2007
Исправлено: 10.12.2016
Версия текста: 1.0

Предисловие

Для решения этой проблемы операционная система Windows предоставляет такой сервис и программный интерфейс, как Eventlog. Этот инструментарий относится к числу базовых сервисов Windows, т.е. поставляется с самой системой и система сама же его использует. Стоит заметить, что эта возможность есть только у систем семейств WinNT/XP, т.к. приложение для протоколирования событий является сервисом. Также стоит заметить, что в Windows Vista и Windows Longhorn этот сервис существенно переработан, новый вариант в этой статье рассматриваться не будет.

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

Теория

Eventlog что это за служба. Смотреть фото Eventlog что это за служба. Смотреть картинку Eventlog что это за служба. Картинка про Eventlog что это за служба. Фото Eventlog что это за служба
Рисунок 1.

Наверное, почти все разработчики используют в своих программах протоколирование событий при выявлении ошибок, отладке и диагностировании приложений. Но даже после успешного сбора и просмотра статистики иной раз бывает сложно проанализировать, что же всё-таки случилось и в каком месте? Так вот, сервис «Журнал событий» является стандартным, централизованным способом сбора статистики и просмотра сообщений о событиях, поступающих от приложений, сервисов операционной системы и аппаратных устройств. Средство для просмотра этих событий является оснасткой Microsoft Management Console. В Windows XP Rus эта оснастка запускается так: Пуск->Настройка->Панель управления->Администрирование->Просмотр Событий (Event Viewer).

ПРЕДУПРЕЖДЕНИЕ

При использовании сервиса протоколирования в журнал следует записывать достаточно важные и нужные сведения о происшедших ошибках, которые действительно потом могут помочь разработчикам разобраться, что же произошло с приложением. Не следует, например, писать в системный журнал с периодичностью 100нс сообщения о том, что пользователь случайно удалил файл readme.txt. Журнал событий – это не средство трассировки.

Рекомендации по протоколированию событий

Сообщение в журнале событий – это, прежде всего, информация, способная помочь вам, администратору и даже пользователю понять, какая проблема возникла в приложении и как её устранить. В частности, это событие может предназначаться специалисту технической поддержки в вашей компании, и даже ему будет тоскливо читать сообщение: «Процесс А не смог прочитать 0x05 байт 0x2-ого сектора дисковода В». Поэтому идеальное сообщение должно помочь пользователю ответить на следующие вопросы:

Могут пригодиться и следующие рекомендации:

Соглашения о стиле содержания сообщения:

Это неполный список рекомендаций, взятый из MSDN. На самом деле в популярных книгах, например, у Саттера, есть более интересные рекомендации.

События в журнале

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

Тип событияПояснение
Ошибка (Error)Этим типом обычно определяется серьёзная ошибка приложения. Например, исполнение приложения прервалось из-за нехватки ресурсов.
Предупреждение (Warning)Этим типом приложение обычно информирует о том, что скоро может возникнуть проблема, например, закончится дисковое пространство.
Информация (Information)Этим типом приложение обычно информирует об успехе какой-либо важной операции, например, при старте сервиса.
Успешный отчёт (Success Audit)Этот тип события обычно означает об успехе какой-либо операции доступа, например, пользователь вошёл в систему.
Не успешный отчёт (Fault Audit)Этот тип события обычно означает, что произошла какая-то ошибка при доступе к ресурсу, например, пользователь не смог обратиться к сетевому диску.

Поскольку запись в журнал может происходить нечасто, в тексте сообщения следует достаточно полно описывать происшедшее событие. Следует достаточно понятно описывать событие, так как информацию о событии, до того как она попадёт к разработчику, может просмотреть, например, администратор системы и не придав ей особого значения, просто проигнорировать.

СОВЕТ

Элементы журнала событий


Журналы

Всю информацию о настройках журнала сервис берёт из реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog.

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

Журнал (Log)Пояснение
Приложение (Application)Этот журнал содержит записи от приложений. Например, если мы зарегистрируем свой источник событий (т.е. приложение) и не укажем журнал, по умолчанию записи будут поступать сюда.
Система (System)Этот журнал содержит записи, поступающие от системных служб. Но писать в него может любое приложение.
Безопасность (Security)Этот журнал предназначен для аудита, например, событий входа пользователя в систему.
Другой (Custom)Можно создать свой журнал. Не поддерживается в Windows NT.

Для каждого журнала определяются ключи. Практически все они необязательны и имеют значения по умолчанию, но рекомендуется всё же создавать их для своего журнала.

Ключ в реестреПояснение
DisplayNameFileИмя файла, в котором содержится локализованная строка с названием журнала, то есть строка, которую покажет Event Viewer. Если параметр не указан, Event Viewer в качестве строки покажет наименование подключа, в котором определён параметр. По умолчанию все локализованные ресурсы находятся в %SystemRoot%\system32\ELS.DLL. Строковый параметр.
DisplayNameIDИдентификатор строки в ресурсной DLL. Тип параметра DWORD.
FileПуть к папке, где Event Viewer будет хранить файлы журналов. По умолчанию это %SystemRoot%\system32\config\MyLogName, где MyLogName – имя журнала. При создании нового файла журнала сервис должен иметь права на полный доступ к файлу. Если значение этого параметра будет неверным, все записи будут перенаправляться в журнал Application. В пути нельзя использовать имя удалённого компьютера, DOS-устройства, дисководы, именованные каналы. Нельзя использовать переменные окружения, которые нельзя раскрыть в контексте сервиса.
MaxSizeМаксимальный размер журнала в байтах. По умолчанию 512К. Параметр DWORD.
PrimaryModuleНаименование ключа, где хранятся настройки по умолчанию. Обычно совпадает с наименованием журнала. Строковый параметр.
RetentionИнтервал в секундах, в течение которого записи могут остаться не перезаписанными. Если установлено в ноль, записи в журнале всегда перезаписываются, если не ноль или 0xFFFFFFFF, то записи никогда не перезаписываются. При достижении максимального размера журнал необходимо очистить вручную, иначе записи будут потеряны. Перед тем, как изменять это значение, журнал необходимо очистить. Параметр DWORD. По умолчанию – 0.
SourcesСписок приложений, сервисов, которые могут писать в журнал. Только для чтения. Этот список создаёт сам сервис. Названия приложений берутся из текущей ветки журнала и разделяются null-terminated. Параметр многострочный.
AutoBackupLogFilesЕсли значение параметра – 0, журнал не сохраняется как резервная копия. По умолчанию – 0.
RestrictGuestAccessЕсли значение – 1, то пользователи под учётной записью Guest и Anonymous не имеют доступа к журналу. По умолчанию – 0.
IsolationНе используется.

Источники событий

Каждая подветка в ветке Eventlog – это источник событий.

Например, для приложения MySuperApp.EXE, которое будет записывать события в журнал Application, необходимо создать такую подветку:

Здесь MySuperApp – это произвольное имя, по которому сервис (журнал) будет опознавать события, поступающие от нашего приложения. Каких либо соглашений об имени в документации не указано, но видимо, имя должно быть уникально в пределах одной подветки. Обычно используется название приложения или исполняемого модуля. По сути дела, это и есть регистрация приложения в сервисах Event Logging и Event Viewer.

Пользовательские приложения и сервисы должны либо регистрировать себя в журнале Application, либо создавать свой журнал. Журнал Security используется только системой. Драйверы устройств должны использовать журнал System.

Каждый источник событий (как мы уже знаем, приложение) должен в своей подветке определить перечисленные ключи. Они помогают Event Viewer сопоставлять сообщения и подставляемые параметры из ресурсной DLL-библиотеки с идентификаторами в приложении (позже я это продемонстрирую на примере):

Ключ в реестреПояснение
CategoryCountЧисло используемых категорий. Тип DWORD.
CategoryMessageFileПуть к файлу с локализованными строками, определяющими категории. Строковый параметр.
EventMessageFileПуть к файлу с локализованными строками сообщений. Можно перечислить несколько файлов через запятую. Например, EVT_ENG.DLL, EVT_RUS.DLL. Строковый параметр.
ParameterMessageFileПуть к файлу с локализованными строками параметров, подставляемых в текст сообщения. Строковый параметр.
TypeSupportedПараметр определяет типы поддерживаемых сообщений. Например, только ошибки и предупреждения: EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE. Параметр DWORD определяет маску из следующих типов:EVENTLOG_ERROR_TYPE, EVENTLOG_WARNING_TYPE, EVENTLOG_INFORMATION_TYPE, EVENTLOG_AUDIT_SUCCESS, EVENTLOG_AUDIT_FAILURE

ПРЕДУПРЕЖДЕНИЕ

Однако если ветка была найдена, но не были определены файлы сообщений для найденного источника событий, то при открытии Event Viewer сообщит об ошибке. Поэтому хорошим тоном будет, не только зарегистрировать источник событий, но и предоставить файлы сообщений.

Eventlog что это за служба. Смотреть фото Eventlog что это за служба. Смотреть картинку Eventlog что это за служба. Картинка про Eventlog что это за служба. Фото Eventlog что это за служба
Рисунок 2.

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

Практика

Создадим сначала ресурсную библиотеку с категориями, сообщениями и параметрами. Для этого необходимо создать обычный текстовый файл с расширением MC.

Файл сообщений

Категории, сообщения и подставляемые параметры можно разместить как в одном файле, так и в разных. Для удобства и наглядности разместим всё в одном файле MYEVT_ENG.MC.

Категории событий

Категории событий – это всего лишь числовые идентификаторы, которые помогают фильтровать записи при просмотре журнала в Event Viewer. Каждый источник событий может обозначить свои категории любым числом. Надо только учесть, что они должны располагаться в начале файла сообщений последовательно (по порядку) и начинаться с 1. Подробное описание формата файла *.MC можно найти в в MSDN.

Идентификаторы событий

Каждый идентификатор события уникален в пределах файла сообщений. Каждый источник событий может определять свои собственные идентификаторы и связанные с ними строки. В Event Viewer при просмотре журнала мы как раз и видим эти строки (см. рисунок).

Формат кода идентификатора события выглядит так (впрочем, это соглашение, принятое в Windows):

3322222222221111111111
76543210765432107654321076543210
313029282726252423222120191817161514131211109876543210
SeveriryCRFacilityCode

Важность ошибки (Severity):

Принадлежность (Customer bit):

Подробные пояснения можно найти в книге Рихтера или в MSDN.

Строки сообщений

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

Итак, мы написали файл MYEVT_ENG.MC. Теперь нам понадобится утилита MessageCompiler (MC.EXE), которая поставляется с MSVC6.0 и Platform SDK. Это консольное приложение скомпилирует файл сообщений:

В результате мы получим следующие файлы: MYEVT_ENG.H (определения символических имён), Msg00001.bin (бинарный ресурс для каждого языка), MYEVT_ENG.RC (в нём подключены бинарные ресурсы). Кстати, файл WINERROR.H, поставляемый с Microsoft Visual Studio, именно так и сгенерирован.

Теперь скомпилируем файл ресурсов MYEVT_ENG.RC:

В результате мы получим файл MYEVT_ENG.RES. И, наконец-то, скомпилируем библиотеку:

Теперь нам осталось зарегистрировать источник событий и написать код, использующий журнал событий. К сожалению, Microsoft не предоставляет никаких утилит для регистрации источника событий (мне, по крайней мере, они неизвестны), поэтому делать все придется ручками. На целевой машине это можно сделать всего один раз, например, при инсталляции.

СОВЕТ

Один и тот же файл сообщений могут использовать несколько приложений. И даже если сообщения написаны на разных языках, они всё равно могут находиться в одном ресурсном файле.

Регистрация источника событий

Для регистрации источника событий достаточно всего лишь определить несколько ключей в реестре (описание ключей приведены выше).

Теперь сервис Eventlog готов принимать сообщения о событиях, а Event Viewer – показывать их. Осталось только это использовать.

Использование журнала событий

Здесь стоит пояснить две важные функции: RegisterEventSource и ReportEvent.

lpSourceName – это имя источника события, который будет отсылать сообщения в журнал. В нашем примере это был MySuperApp. Нельзя использовать журнал Security (функция вернёт INVALID_HANDLE_VALUE). Если имя источника события не было найдено в реестре (в подключе \Eventlog), будет использоваться журнал Application.

Функция возвращает описатель журнала или NULL.

hEventLog – описатель, который вернула функция RegisterEventSource.

wType – тип события (EVENTLOG_SUCCESS, EVENTLOG_AUDIT_FAILURE, EVENTLOG_AUDIT_SUCCESS, EVENTLOG_ERROR_TYPE, EVENTLOG_WARNING_TYPE, EVENTLOG_INFORMATION). Указать можно только один тип.

wCategory – категория (см. Категории событий)

dwEventType – сообщение (см. Идентификаторы событий)

lpUserSid – указатель на структуру SID.

wNumStrings – количество подставляемых параметров в lpStrings. Каждая строка ограничена 32К.

dwDataSize – число байт в lpRawData.

lpRawData – произвольный массив байтов. Event Viewer никак не интерпретирует эти данные и отображает их в том виде, в котором они были переданы.

Eventlog предоставляет еще несколько функций (перебрать записи в журнале, найти запись, и т.д.) для работы с журналами событий. Почти все они нужны только для какой-либо программы-анализатора.

Послесловие

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

В Windows Vista Microsoft переработала этот сервис. Например, можно генерировать логи в XML, отсылать отчёты о логах и т.д.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *