Event Viewer, как программно добавить в него задачу

В настоящее время я пишу сообщения о событиях в средстве просмотра событий операционной системы (Windows 7), я использую С# и .net framework 4

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

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

Например, добавление обработчика ошибок в качестве «задачи» (как это вызывается в средстве просмотра событий)

возможно ли это программно? (Я знаю, что это возможно через интерфейс)

Спасибо


person user3292410    schedule 20.02.2014    source источник


Ответы (2)


Это позволит сделать управляемая оболочка планировщика заданий. Посмотрите, в частности, на EventTrigger, который позволит вам подключиться к событиям Windows. На странице примеров есть довольно простой пример.

person ajg    schedule 20.02.2014
comment
спасибо за ваш ответ, но это не связано с этим. Что я хотел сделать, так это программно добавить задачу в eventtviewer - person user3292410; 20.02.2014
comment
Если я не совсем неправильно понял ваш вопрос, это именно то, что это делает. Когда вы добавляете задачу по ссылке в EventViewer, она просто создает запланированную задачу за кулисами с триггером в качестве EventTrigger. Посмотрите на метод SetBasic на странице с примерами выше, он принимает 3 параметра — первый в имени журнала (например, «Приложение»), второй — это источник (например, «Имя вашего приложения»), третий — идентификатор события (например, 1000). - person ajg; 20.02.2014
comment
Привет, я не вижу никаких ссылок на журнал EventViewer. Ваша ссылка кажется больше для добавления задачи в планировщик, после некоторого количества исследований я нашел ответ, опубликовал и ответил. Спасибо - person user3292410; 20.02.2014

после того, как я провел некоторое исследование, я был после:

public class EventViewer()
{
    EventLog _eventlog;

    public void createandreferenceEventViewer(string sLogNameTrimmed)
    {
            //Creates or reference the default Event Viewer
            if (!EventLog.SourceExists(sLogNameTrimmed))
            {                
                EventLog.CreateEventSource(sLogNameTrimmed, sLogNameTrimmed);
                Thread.Sleep(500); // Event viewer need latency to allow being written 
            }
            // Connect to the newly created / existing Log
            _eventlog = new EventLog(sLogNameTrimmed);
            _eventlog.Source = sLogNameTrimmed;
            _eventlog.EntryWritten += WrittenEntryEventHandler;
            _eventlog.EnableRaisingEvents = true;
    }

    void WrittenEntryEventHandler(object source, EntryWrittenEventArgs e)
        {
            switch (e.Entry.EntryType)
            {
                case EventLogEntryType.Error:
                        DO_ERROR_HANDLING_HERE();
                    break;
                case EventLogEntryType.Warning :
                        DO_WARNING_HANDLING_HERE();
                    break;
                default:
                    DO_DEFAULT_HANDLING_HERE();
                    break;
            }
        }
}

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

Спасибо

person user3292410    schedule 20.02.2014