Ereignisprotokoll remote mit .NET lesen

8

Ich möchte das Ereignisprotokoll auf einem Remote-Computer lesen, um beim Testen auf Fehler zu prüfen. Hier ist ein relevanter Code:

%Vor%

Derzeit löst dieser Code eine Ausnahme aus (Versuch, eine nicht autorisierte Operation auszuführen). Laut MSDN benötige ich EventLogPermission, aber ich habe mich bemüht, Beispiele dafür zu finden Benutze diese Erlaubnis. Hat jemand ein Beispiel, wie man das macht?

Bearbeiten: Antwort auf Kommentare

Vielen Dank für die Kommentare - hier ist die zusätzliche Information angefordert:

Die Ausnahme wird von der foreach -Anweisung ausgelöst. Insbesondere beim Durchlaufen des Codes wird der nächste Schritt geworfen, wenn in markiert ist. Es scheint, dass ich das Ereignisprotokollobjekt erstellen konnte, aber ich kann nicht auf die Einträge im Ereignisprotokoll zugreifen.

Mein Konto hat keine Berechtigung, das Ereignisprotokoll auf dem Zielsystem zu lesen, aber ich habe Anmeldeinformationen für ein Konto, das dies tut. Wenn Sie sich manuell über die Ereignisanzeige verbinden, besteht die Möglichkeit, sich als ein anderer Benutzer zu verbinden. Nachdem dies manuell gemacht wurde, lief mein Code ohne Probleme. Ich kann jedoch nicht jedes Mal, wenn dieses Programm ausgeführt wird, manuell darauf zurückgreifen. Was ich brauche, ist eine Möglichkeit, sich als ein anderer Benutzer programmatisch zu verbinden. Ich dachte, dass die EventLogPermission der Weg wäre, um das zu tun, aber vielleicht gibt es einen anderen Weg. Wenn jemand weiß, wie man sich mit einem entfernten Protokoll als anderer Benutzer in C # verbindet, würde ich genau das suchen, was ich gesucht habe.

    
Brian 15.03.2011, 14:28
quelle

2 Antworten

2

Danke an alle, die diese Frage kommentiert haben. Nachdem ich festgestellt hatte, dass die Berechtigungen möglicherweise nicht Teil von .NET, sondern Teil von Windows und der Ereignisanzeige selbst sind, hatte ich eine neue Richtung für meine eigenen Untersuchungen.

Es sieht so aus, als ob ein "net use" -Befehl alles war, um die Verbindung zwischen meinem lokalen Computer und dem entfernten Computer herzustellen. Als ich "net use" anrief, bevor ich den Code verwendete, den ich in der Frage gepostet hatte, funktionierten die Dinge wunderbar. Es ist einfach genug, das aus dem Code vor dem Lesen aus dem Ereignisprotokoll aufzurufen.

Nochmals vielen Dank für Ihre Hilfe!

    
Brian 16.03.2011, 16:23
quelle
6

WMI ist dafür unglaublich nützlich, ein Snippet wie

%Vor%

Ermöglicht Ihnen, die Protokolle abzufragen. Dieses Dienstprogramm von MS wird es ermöglichen Sie können WMI erkunden und erstellen sogar den .net-Code, um die Abfragen aufzurufen.

Ein weiterer Vorteil ist, dass es alle Ereignisse bekommt und sie lokal zur Anwendung bringt, wo Sie sie in Ihrer Freizeit analysieren können. Das Iterieren der Ereignisse in der Art, wie Sie es jetzt tun, ist anfällig für Fehler, wenn die Verbindung während der Verarbeitung unterbrochen wird (im Übrigen ist dies die gleiche Methode, die normalerweise beim Datenbankzugriff verwendet wird).

    
StingyJack 16.03.2011 18:47
quelle

Tags und Links