c# - System.Security.SecurityException: Die Quelle wurde nicht gefunden, aber einige oder alle Ereignisprotokolle konnten nicht durchsucht werden. Nicht zugreifbare Protokolle: Sicherheit




3 Answers

Ich habe dieselbe Ausnahme erhalten, als ich versuche, einen Dienst über die Befehlszeile zu installieren, wenn Sie installutil in Windows 7 verwenden. Die Lösung bestand darin, die Befehlszeile als Administrator zu öffnen und dann installutil auszuführen.

Es kann auch einfacher sein, ein Framework wie TopShelf zum TopShelf Ihrer Dienste zu verwenden, da es die gesamte Setup-Konfiguration vom Namen und der Beschreibung des Dienstes bis zur Funktionsweise Ihres Wiederherstellungsprozesses verwaltet. Außerdem können Sie Ihren Service problemlos aus der IDE heraus starten, wenn Sie ihn debuggen.

c# windows windows-services

Ich versuche, einen Windows-Dienst zu erstellen, aber wenn ich es versuche, es zu installieren, wird der Fehler zurückgesetzt und es wird mir dieser Fehler angezeigt:

System.Security.SecurityException: Die Quelle wurde nicht gefunden, aber einige oder alle Ereignisprotokolle konnten nicht durchsucht werden. Nicht zugreifbare Protokolle: Sicherheit.

Ich weiß nicht, was das bedeutet - meine Anwendung hat das Nötigste, da ich erst die Dinge teste.

Mein Installer-Code:

namespace WindowsService1
{
    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
        public ProjectInstaller()
        {
            //set the privileges
            processInstaller.Account = ServiceAccount.LocalSystem;
            processInstaller.Username = null;
            processInstaller.Password = null;

            serviceInstaller.DisplayName = "My Service";
            serviceInstaller.StartType = ServiceStartMode.Manual;

            //must be the same as what was set in Program's constructor
            serviceInstaller.ServiceName = "My Service";

            this.Installers.Add(processInstaller);
            this.Installers.Add(serviceInstaller);
        }

        private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e)
        {
        }

        private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
        {
        }
    }
}

Mein Servicecode:

public partial class Service1 : ServiceBase
{
    public Service1()
    {
        this.ServiceName = "My Service";
    }

    protected override void OnStart(string[] args)
    {
        base.OnStart(args);
    }

    protected override void OnStop()
    {
        base.OnStop();
    }
}



Führen Sie als Administrator aus

Dies ist ein sehr häufiges Problem, das Programmierer vermissen




Sie versuchen wahrscheinlich, einen Dienst mit zu installieren

  1. Ein Benutzerkonto, das nicht über ausreichende Rechte ODER verfügt
  2. Ein Benutzer mit Administratorrechten hat die Eingabeaufforderung jedoch nicht im Administratormodus ausgeführt.

In diesem Fall betrifft das Problem insbesondere die Erstellung einiger EventLog-Registrierungsschlüssel während der Dienstinstallation.

Sie können dies beheben, indem Sie sicherstellen, dass Sie die Eingabeaufforderung im Administratormodus ausführen. (Rechtsklick> Als Administrator ausführen)

Ich bin auch auf Fälle gestoßen, in denen diese Methode das SecurityException- Problem immer noch nicht löst, da einige Registrierungsschlüssel nicht über die Berechtigung "Vollzugriff" für Administratorkonten verfügen.

Für die folgenden Schlüssel sollte "Vollzugriff" für Administratoren festgelegt sein, damit der Dienst in das Ereignisprotokoll schreiben kann:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ Application

Dies kann geschehen durch:

  1. Aufrufen des Windows-Registrierungseditors
    • Run [Win + R]
    • Geben Sie "regedit" ein.
    • OK
  2. Navigieren Sie in einem Pfad zu ungefähr
  3. Klicken Sie mit der rechten Maustaste auf den gewünschten Pfad
  4. Stellen Sie sicher, dass die Kontrollkästchen Lese- und Vollzugriffsberechtigungen für Administratoren aktiviert sind
  5. Klicken Sie auf Übernehmen und auf OK
  6. Wiederholen Sie den Vorgang für den anderen Pfad



Related