Fehler beim Windows Dienst

Bella_Isy

Erfahrenes Mitglied
Hallo zusammen,

ich habe einen Dienst geschrieben und die eigentliche Funktion funktioniert auch. Jetzt wollte ich nur noch, dass ganze Abrunden in dem ich die Log Eintrage in ein extra Protokoll statt wie bisher in das Protokoll "Anwendung" schreibe. Ich habe das ganze einem Testprojekt getestet, da funktiert es einwandfrei. Doch wenn ich den Code in den Service einbinde bekomme ich die Fehlermeldung:

Die Quelle wurde nicht gefunden, aber einige oder alle Ereignisprotokolle konnten nicht durchsucht werden. Protokolle, auf die kein Zugriff möglich war: Security.

Ich weiß, das es ein Sicherheitsproblem ist. Aber habe leider keine Ahnung wie ich das beheben kann. Kann mir wer Weiterhelfen?

Viele Grüße Isabelle

PS: Hier noch mein Code von meinem TestProjekt. Hier funktioniert es.
Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Eigenes Protokoll erstellen
            if (!EventLog.SourceExists("Sage_PicklisteLog"))
            {
                EventSourceCreationData mySource = new EventSourceCreationData(
                    "Sage_PicklisteLog", "PicklisteLog");
                mySource.MachineName = ".";
                EventLog.CreateEventSource(mySource);
            }
            else
            {
                EventLog.DeleteEventSource("Sage_PicklisteLog");
                EventLog.Delete("PicklisteLog");
            }            
        }
    }
}

Und hier den Code aus meinem Service von OnStart:
Code:
protected override void OnStart(string[] args)
        {
            try
            {
                if (!EventLog.SourceExists("Sage_PicklisteLog"))
                {
                    EventSourceCreationData mySource = new EventSourceCreationData(
                        "Sage_PicklisteLog", "PicklisteLog");
                    mySource.MachineName = ".";
                    EventLog.CreateEventSource(mySource);
                }
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("Fehler: " + ex.Message);
            }

            //Anmeldedaten setzen
            m_Server = @"Server";
            m_Database = "Database";

            //LogIn überprüfen
            if (CheckLogIn())
            {
                //Log Eintrag
                EventLog.WriteEntry(DateTime.Now.TimeOfDay +
                    ": Login erfolgreich");
            }
            else
            {
                //Log Eintrag
                EventLog.WriteEntry(DateTime.Now.TimeOfDay +
                    ": Login fehlgeschlagen");
                return;
            }

            System.Timers.Timer aTimer = new System.Timers.Timer();

            // Hook up the Elapsed event for the timer.
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

            // Set the Interval to 5 min (300000 milliseconds).
            aTimer.Interval = 300000;
            aTimer.Enabled = true;

            // Keep the timer alive until the end of Main.
            GC.KeepAlive(aTimer);
        }
 
Hallo!
Du hast ja die Möglichkeit den Dienst, wenn er installiert ist unter einem bestimmten Anmeldekonto laufen zu lassen.
Versuche testweise unter Computerverwaltung -- Dienste -- *deinDienst* das Sys - admin Konto mit dem Pwd einzutragen und auszuführen.
Wenn das klappt versuche den Dienst mit dem Lokalen_Dienst - Konto auszuführen.
Sollte dies auch klappen, bleib beim Lokalen Dienst Konto.
 
Hm, ich grab das Thema mal aus, weil es so schön in meine Fehlermeldung reinpasst. Meine Meldung ist ein wenig anders:
Code:
Microsoft (R) .NET Framework-Installationsprogramm, Version 2.0.50727.4927
Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.


Eine transaktive Installation wird ausgeführt.

Die Installationsphase wird gestartet.
Die Protokolldatei enthält den Fortschritt der Assembly C:\Test\MasterScheduler.exe.
Die Datei befindet sich in C:\Test\MasterScheduler.InstallLog.
Assembly C:\Test\MasterScheduler.exe wird installiert.
Betroffene Parameter:
   assemblypath = C:\Test\MasterScheduler.exe
   logfile = C:\Test\MasterScheduler.InstallLog
   logtoconsole =

Während der Installationsphase ist eine Ausnahme aufgetreten.
System.ComponentModel.Win32Exception: Zugriff verweigert

Die Rollbackphase der Installation wird gestartet.
Die Protokolldatei enthält den Fortschritt der Assembly C:\Test\MasterScheduler.exe.
Die Datei befindet sich in C:\MasterScheduler.InstallLog.
Assembly C:\MasterScheduler.exe wird zurückgesetzt.
Betroffene Parameter:
   assemblypath = C:\Test\MasterScheduler.exe
   logfile = C:\Test\MasterScheduler.InstallLog
   logtoconsole =
Während der Rollbackphase des Installers System.ServiceProcess.ServiceProcessIns
taller ist eine Ausnahme aufgetreten.
System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinst
anz festgelegt.
Während der Rollbackphase der Installation ist eine Ausnahme aufgetreten. Diese
Ausnahme wird ignoriert, und der Rollback wird fortgesetzt. Der ursprüngliche Zu
stand des Computers wird jedoch möglicherweise nicht vollständig wiederhergestel
lt, nachdem der Rollback beendet ist.

Die Rollbackphase wurde erfolgreich abgeschlossen.

Die transaktive Installation ist abgeschlossen.
Fehler bei der Installation, und der Rollback wurde ausgeführt.

Ich führe das ganze mit dem Administrator-Konto unter einem Windows 7 durch. Dass da ein Recheproblem ist, schockiert mich schon ein wenig. Weiss jemand, mit welchen Berechtigungen man einen Service unter Windows 7 installieren muss?
Danke und Gruss...
 
Okay, habs inzwischen geschafft, dass sich die Fehlermeldung verschiebt. :D Für das Berechtigungsproblem oben: Einfach die Konsole, in der das Installutil aufgerufen wird, mit Administrationsrechen starten. Allerdings habe ich jetzt folgende Fehlermeldung:
Code:
Während der Installationsphase ist eine Ausnahme aufgetreten.
System.ComponentModel.Win32Exception: Zuordnungen von Kontennamen und Sicherheit
skennungen wurden nicht durchgeführt

Habs bereits mit dem LocalSystem-Account, LocalService-Account, dem Administrator-Konto sowie meinen Benutzeraccount versucht, jedesmal dieselbe Fehlermeldung...
 
Zurück