Récupérer les journaux d'événement pour les traiter sur un autre poste

Résolu
BHMath76 Messages postés 2 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 9 février 2010 - 8 févr. 2010 à 14:04
BHMath76 Messages postés 2 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 9 février 2010 - 9 févr. 2010 à 16:47
Bonjour,

Voilà mon problème, j'ai besoin de récupérer les journaux d'un poste pour pouvoir les traiter sur un autre poste.
Je me suis dit simple à faire, je copie les fichiers *.evt du dossier $Windows\system32\config dans un zip, et je récupère le zip.

Puis pour traiter, j'ouvre l'observateur d'événements et je fais "Action -> Ouvrir un fichier journal...".

Sauf que lorsque j'essaye d'ouvrir le fichier en question, il me dit "Le fichier journal d'événement est endommagé" si le journal contient des infos, sinon il m'ouvre bien le fichier s'il n'y a aucune information dedans.

Est-ce que un simple copier coller par du code c# est suffisant pour récupérer un journal ou y a t-il une autre méthode pour ne pas endommagé le fichier ?

J'aimerais obtenir un *.evt comme on obtient en faisant "clic droit -> Enregistrer le fichier journal sous.." Pour pouvoir avoir toute les informations et les traiter dans leur intégralité !

1 réponse

BHMath76 Messages postés 2 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 9 février 2010
9 févr. 2010 à 16:47
Bon j'ai procédé différemment je récupère toutes les informations dans un csv qui permet de traiter les données plus facilement mais ce n'est pas réellement ce que je voulais quelqu'un d'autre a-t-il trouvé une solution ?

Voici mon code :
string tempPath = GetPath("Log") + "\\Temp";
Directory.CreateDirectory(tempPath);
EventLog[] remoteEventLogs = EventLog.GetEventLogs(System.Environment.MachineName);

try
{
    for (int i = 0; i < remoteEventLogs.Length; i++)
    {
        string logName = remoteEventLogs[i].Log;
        EventLog logEvent = new EventLog(logName);

        StreamWriter sw = new StreamWriter(tempPath + "\" + logName + ".evt.csv", false, Encoding.GetEncoding(1252));
        sw.WriteLine("Type;Date;Heure;Source;Catégorie;Événement;Utilisateur;Ordinateur;Message");
                            
        for (int numLog = logEvent.Entries.Count - 1; numLog >= 0; numLog--)
        {
            EventLogEntry evt = logEvent.Entries[numLog];
            string message = evt.Message.Replace("\n", "\n;;;;;;;;");
            string user (evt.UserName null) ? "N/A" : evt.UserName;

            sw.WriteLine(evt.EntryType + ";" + evt.TimeGenerated.ToShortDateString() + ";" + evt.TimeGenerated.ToShortTimeString() + ";" +
                evt.Source + ";" + evt.Category + ";" + evt.InstanceId + ";" + user + ";" + evt.MachineName + ";" +
                message);
        }
        sw.Close();
    }
}
catch (Exception)
{
    log.Error("Impossible de récupérer les journaux d'évènements situés dans le répertoire "$WinDir\\system32\\config".");
}
3
Rejoignez-nous