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

Messages postés
2
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
9 février 2010
- - Dernière 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
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é !
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
2
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
9 février 2010
3
Merci
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".");
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BHMath76