Я использую событие OnEntryWritten для получения событий из журнала событий при их запуске.
Проблема, которую я начал видеть сегодня, состоит в том, что некоторые сообщения приходят с ненастроенными параметрами.
Например:
Платформа фильтрации Windows разрешает привязку к локальному порту.Информация о приложении: ID процесса: 9852 Имя приложения: \ device \ harddiskvolume7 \ program files (x86) \ google \ chrome \ application \ chrome.exe Информация о сети: Адрес источника ::: Порт источника: 51714 Протокол: 17 Информация о фильтре: Выполнение фильтра-Time ID: 0 Имя слоя: %% 14608 ID времени выполнения слоя: 38
Вы можете видеть параметр %% 14608.Это имеет значение, если я вижу тот же журнал в средстве просмотра событий.
Я использую службу Windows в качестве LocalSystem, поэтому я не знаю, является ли это проблемой разрешения или эта технология бесполезнасовсем.Я попробовал остальные варианты, предлагаемые на C #, и они также не соответствуют моим требованиям.
ОБНОВЛЕНИЕ: это код, который я использую для чтения событий.
1) Сначала я подписываюсь на соответствующий журнал событий:
private void Subscribe()
{
_eventLog.EnableRaisingEvents = true;
var callbackFunction = new EntryWrittenEventHandler(OnEntryWritten);
_eventLog.EntryWritten += callbackFunction;
// Save a reference for callbackFunction
_eventHandler = callbackFunction;
}
2) Затем по методу обратного вызова я читаю данные из сообщения:
public void OnEntryWritten(Object source, EntryWrittenEventArgs entryArgs)
{
// When overwrite policy is enabled, this will trigger for all elements when it starts writing new ones
try
{
var entry = entryArgs.Entry;
var timeWritten = entry.TimeWritten;
// This comes with %% values depending on the log
string message = entry.Message;
}
catch(Exception ex)
{
...
}
}
3) Журнал событийпеременная просто инициализируется как:
var eventLog = EventLog.GetEventLogs().FirstOrDefault(el => el.Log.Equals(logName, StringComparison.OrdinalIgnoreCase));
Мне нужна помощь в этом, честно говоря, я не знаю, что еще попробовать.
ОБНОВЛЕНИЕ Я добавляюздесь несколько изображений, чтобы каждый мог понять ситуацию немного лучше.Если честно, похоже, что нет другого решения, кроме как реализовать словарь и заменить вручную необходимые значения, которые кажутся всегда постоянными.
Это то, что я вижу в средстве просмотра событий для данного идентификатора события:![Data from Event Viewer](https://i.stack.imgur.com/e5FRo.png)
Вот что я вижу в своей программе, когда читаю эту запись: ![Entry being read from program 1](https://i.stack.imgur.com/eno7i.png)
![Entry being read from program 2](https://i.stack.imgur.com/xHbQv.png)
Хорошо видно, что следующие значения:
- «Ключ машины».(Тип ключа)
- «Чтение сохраненного ключа из файла».(Операция)
Не отображаются в свойствах ReplacementStrings и в свойствах сообщения как: %% 2499 и %% 2458
Это значение сообщения, которое я получаю в программе:
"Операция над файлом ключей. \ R \ n \ r \ nСубъект: \ r \ n \ tИдентификатор безопасности: \ t \ tS-1-5-18 \ r \ n \ tИмя учетной записи: \ t \ tMyAccount $ \ r \ n\ tAccount Domain: \ t \ tWORKGROUP \ r \ n \ tLogon ID: \ t \ t0x3e7 \ r \ n \ r \ n Информация о процессе: \ r \ n \ t ID процесса: \ t \ t6644 \ r \ n \ t Время создания процесса: \ t2019-04-03T12: 17: 24.587994400Z \ r \ n \ r \ nКриптографические параметры: \ r \ n \ tПровайдер: \ tMicrosoft Software Key Storage Provider \ r \ n \ t Имя алгоритма: \ tUNKNOWN \ r \ n\ tKey Name: \ t816339d2-c476-4f1e-bc40-954f0aa0f851 \ r \ n \ tKey Тип: \ t %% 2499 \ r \ n \ r \ nКлючевая информация о работе с файлом: \ r \ n \ tFile Path: \ tC:\ ProgramData \ Microsoft \ Crypto \ Keys \ 6d55a45fd69327293e9ed3e7930f4565_5663a8bb-2d1d-4c0d-90c1-624beddabe9c \ г \ п \ tOperation: \ т %% 2458 \ г \ п \ tReturn Код: \ T0x0"
1059 * Что может бытьсделано здесь?В записи также нет ничего, что могло бы помочь мне получить оба значения.