Sie können den Grund für die Abschaltung erhalten, wenn Sie das EventLog untersuchen.
Ich habe eine kurze Demo zu Windows Forms zusammengestellt, die Sie an Ihren Windows-Dienst anpassen können.
Ich habe eine EventLog-Komponente zum Formular hinzugefügt und ordnungsgemäß konfiguriert. Das folgende Snippet zeigt den in InitializeComponent() generierten Code für die Einstellungen, die ich über den Designer vorgenommen habe.
this.eventLog1.EnableRaisingEvents = true;
this.eventLog1.Log = "System";
this.eventLog1.Source = "USER32";
this.eventLog1.SynchronizingObject = this;
this.eventLog1.EntryWritten += new System.Diagnostics.EntryWrittenEventHandler(this.eventLog1_EntryWritten);
Auf den Event-Handler, werden Sie etwas in den folgenden Zeilen haben:
private void eventLog1_EntryWritten(object sender, System.Diagnostics.EntryWrittenEventArgs e)
{
EventLogEntry entry = e.Entry;
if (e.Entry.EventID == 1074)
{
File.AppendAllText(@"c:\message.txt", entry.Message);
}
}
einen Blick auf Ihrem Ereignisprotokoll Nehmen Sie die entsprechende EventIDs zu sehen heraus zu filtern. Der Compiler wird Sie warnen, dass EventID veraltet ist und Ihnen sagen, dass Sie InstanceId verwenden sollten, aber in den Schnelltests, die ich hier gemacht habe, hat es nicht in meine Protokolldatei geschrieben und ich denke, wir haben bereits genug Informationen um dich auf den richtigen Weg zu bringen.