среда, 22 октября 2008 г.

How to export EventLog in .evt format

Как сделать экспорт журналов событий в evt формат из C# 2.0?
Занадобилось мне сделать утиль, чтоб у пользователей логи забирать и не тратить свое время на объяснение чего и откуда экспортировать.
Сделал только для System и Application журналов, добавить остальные не проблема, знаючи...
Собственно:
using System;
using System.IO;
using System.Runtime.InteropServices;

namespace LogHarvester
{
  class Program
  {
    [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    static extern bool BackupEventLog(IntPtr hEventLog, string backupFile);

    // OpenEventLog PInvoke overloaded call supporting full parameters.
    [DllImport("advapi32.dll", SetLastError = true, EntryPoint = "OpenEventLog")]
    public static extern IntPtr OpenEventLog(
             [MarshalAs(UnmanagedType.LPStr)] String lpUNCServerName,
             [MarshalAs(UnmanagedType.LPStr)] String lpSourceName);

    static void Main()
    {
      BackupEventLog(OpenEventLog(null, "Application"), Path.Combine(Environment.CurrentDirectory, "application.evt"));
      BackupEventLog(OpenEventLog(null, "System"), Path.Combine(Environment.CurrentDirectory, "system.evt"));
    }
  }
}

* This source code was highlighted with Source Code Highlighter.

Комментариев нет: