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

BHMath76 2 Messages postés dimanche 10 décembre 2006Date d'inscription 9 février 2010 Dernière intervention - 8 févr. 2010 à 14:04 - Dernière réponse : BHMath76 2 Messages postés dimanche 10 décembre 2006Date d'inscription 9 février 2010 Dernière intervention
- 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 

Votre réponse

1 réponse

Meilleure réponse
BHMath76 2 Messages postés dimanche 10 décembre 2006Date d'inscription 9 février 2010 Dernière intervention - 9 févr. 2010 à 16:47
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".");
}

Merci BHMath76 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de BHMath76

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.