wake-up-neo.com

Fehler 5: Zugriff beim Starten des Windows-Dienstes verweigert

Ich erhalte diese Fehlermeldung, wenn ich versuche, einen Windows-Dienst zu starten, den ich in C # erstellt habe:

alt text

Mein Code bisher:

private ServiceHost Host = null;

public RightAccessHost()
{
    InitializeComponent();
}

protected override void OnStart(string[] args)
{
    Host = new ServiceHost(typeof(RightAccessWcf));
    Host.Open();
}

protected override void OnStop()
{
    if (Host != null)
        Host.Close();
    Host = null;
}

Update Nr. 1

Ich habe das Problem gelöst, indem ich dem Konto NETWORK SERVICE Berechtigungen erteilte.

alt text

Update Nr. 2

Dienst kann nicht gestartet werden. System.InvalidOperationException: Der Dienst 'RightAccessManagementWcf.RightAccessWcf' hat keine Endpunkte für die Anwendung (keine Infrastruktur). Dies kann daran liegen, dass für Ihre Anwendung keine Konfigurationsdatei gefunden wurde, oder dass kein mit dem Servicenamen übereinstimmendes Serviceelement in der Konfigurationsdatei gefunden wurde oder weil im Serviceelement keine Endpunkte definiert waren. at System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoints (Beschreibung der ServiceDescription) at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost (ServiceDescription-Beschreibung, ServiceHostBase-ServiceHost) at System.ServiceModel.ServiceHostBase.InitializeRuntime () at System.ServiceModel.ServiceHostBase.OnOpen (TimeSpan-Timeout) at System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan-Timeout) bei RightAccessHosting.RightAccessHost.OnStart (String [] args) in C:\Benutzer ....

85
Kris-I

Ich weiß, dass dieser Beitrag alt ist, aber es gibt keine markante Lösung, und ich wollte nur einbringen, wie ich das gelöst habe.

Der erste Error 5: Access Denied-Fehler wurde behoben, indem dem NETWORK SERVICE-Konto Berechtigungen für das Ausgabeverzeichnis erteilt wurden.

Der zweite Started and then stopped-Fehler scheint eine generische Nachricht zu sein, wenn der Dienst durch etwas beschädigt wurde. Überprüfen Sie die Ereignisanzeige (insbesondere "Windows-Protokolle> Anwendung") auf die tatsächliche Fehlermeldung.

In meinem Fall war dies eine falsche Konfigurationseinstellung für Dienste in app.config.

107
Justin Skiles

Computer -> Verwalten -> Service -> [Ihr Service] -Eigenschaften ..__ Die Registerkarte mit den Kontoinformationen. Spielen Sie mit diesen Einstellungen, z. B. den Dienst mit einem Administratorkonto ausführen oder so.

Das hat es für mich getan.

BEARBEITEN: Das Problem kann auch sein, dass die meisten Dienste als LOCAL SERVICE oder LOCAL SYSTEM-Konten ausgeführt werden. Wenn Sie nun C:/my-admin-dir/service.exe mit diesen Konten ausführen, diese jedoch keine Elemente in diesem Verzeichnis ausführen dürfen, erhalten Sie error 5. Suchen Sie die ausführbare Datei des Dienstes, RMB das Verzeichnis -> Eigenschaften -> Sicherheit, und stellen Sie sicher, dass sich das Konto, mit dem der Dienst ausgeführt wird, in der Liste der Benutzer befindet, die über vollständige Kontrolle über das Verzeichnis verfügen.

23
Mike de Klerk

Das hat bei mir funktioniert.

  1. Klicken Sie mit der rechten Maustaste auf den Ordner der obersten Ebene, der die ausführbare Dienstdatei enthält. Gehen Sie zu Eigenschaften
  2. Gehen Sie zur Registerkarte "Sicherheit"
  3. Klicken Sie auf "Bearbeiten".
  4. Klicken Sie auf "Hinzufügen".
  5. Geben Sie den Namen "SYSTEM" ein und klicken Sie auf OK
  6. Markieren Sie den Benutzer SYSTEM und klicken Sie neben "Vollzugriff" auf das Kontrollkästchen "Erlauben".
  7. Klicken Sie zweimal auf OK
15
cmcginty

Ich habe auch den gleichen Fehler erhalten, der durch .__ gelöst wurde. Klicken Sie mit der rechten Maustaste auf Service> Eigenschaften> Anmelden> melden Sie sich an als: Lokales Systemkonto.

10
Asmita Chavan

Stellen Sie sicher, dass Path to executable auf eine tatsächliche ausführbare Datei verweist (klicken Sie mit der rechten Maustaste auf Dienst -> Eigenschaften -> Registerkarte Allgemein). Über Powershell (und sc.exe) können Sie einen Dienst installieren, ohne auf eine ausführbare Datei zu verweisen.

8
cr4ne

Ich habe die lösung:

1. Go to local service window(where all services found)
2. Just right click on your service name: 
3. click on "properties" 
4. go to "log on" tab
5. select "local system account"
6. click "ok"

jetzt können Sie versuchen, den Dienst zu starten. 

4
John

Dieser Fehler tritt auf, wenn Ihre OnStart-Methode einen Fehler enthält. Sie können einen Host nicht direkt in der OnStart-Methode öffnen, da er beim Aufruf nicht wirklich geöffnet wird. Du musst also einen Thread benutzen. Das ist mein Beispiel.

public partial class Service1 : ServiceBase
{
    ServiceHost Host;
    Thread hostThread;
    public Service1()
    {
        InitializeComponent();
         hostThread= new Thread(new ThreadStart(StartHosting));

    }

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

    protected void StartHosting()
    {
        Host = new ServiceHost(typeof(WCFAuth.Service.AuthService));
        Host.Open();
    }

    protected override void OnStop()
    {
        if (Host != null)
            Host.Close();
    }
}
3
santhosh

wenn Sie einen Zugriffcode mit verweigertem Fehlercode 5 haben, versucht Ihr Dienst möglicherweise in Ihrem Code, mit einigen Dateien im System zu interagieren, z

Öffnen Sie die Diensteigenschaften. Wählen Sie die Registerkarte log on aus, und aktivieren Sie die Option, damit der Dienst mit dem Desktop interagieren kann click allow service to interact with desktop

3
kudzai zishumba

In meinem Fall wurde das Folgende nicht geprüft.

 enter image description here

3
Akshay Anand

Für mich - der Ordner, von dem aus der Dienst ausgeführt werden soll, und die darin enthaltenen Dateien wurden mit der Windows-Option "Verschlüsseln" verschlüsselt. Das entfernen und - voila!

2

Eine Ursache für diesen Fehler sind unzureichende Berechtigungen (authentifizierte Benutzer) in Ihrem lokalen Ordner. Um die Berechtigung für "Authentifizierte Benutzer" zu erteilen. Öffnen Sie die Registerkarte "Sicherheit" in den Eigenschaften Ihres Ordners. Gruppe und Änderungen übernehmen.

Sobald dies erledigt war, konnte ich Dienste auch über das Netzwerkdienstkonto ausführen (zuvor konnte ich nur mit dem lokalen Systemkonto ausgeführt werden).

1
Vijay kumar.S

Ich hatte Windows-Dienst mit OWIN und TopShelf gehostet. Ich konnte es nicht starten. Gleicher Fehler - "Zugriff verweigert 5"

Am Ende habe ich alle Perms für meine Bin/Debug gegeben.

Das Problem wurde immer noch nicht gelöst.

Also habe ich mir die Ereignisprotokolle angesehen und es stellte sich heraus, dass Microsoft.Owin.Host.HttpListener nicht in der Klassenbibliothek enthalten war, die die OWIN-Startklasse enthielt.

Stellen Sie daher sicher, dass Sie das Ereignisprotokoll überprüfen, um die Ursache zu ermitteln, bevor Sie mit Perms beginnen usw.

1
Rashmi Pandit

Verwenden Sie LocalSystem Account anstelle von LocalService Account in Service Installer .

Sie können dies tun, indem Sie die folgenden Änderungen in der Entwurfsansicht Ihres Service-Installationsprogramms vornehmen:
Eigenschaften des Service Process Installer -> Setzen Sie das Konto auf LocalSystem .

oder ändern Sie die folgenden Änderungen in der designer.cs-Datei Ihres Service-Installationsprogramms:

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
1
Jay Shah

Ihr Code wird möglicherweise im Sicherheitskontext eines Benutzers ausgeführt, der keinen Dienst starten darf.

Da Sie WCF verwenden, vermute ich, dass Sie sich im Zusammenhang mit NETWORK SERVICE befinden.

siehe: http://support.Microsoft.com/kb/256299

1
Shiraz Bhaiji

Klicken Sie mit der rechten Maustaste auf service in service.msc und wählen Sie property aus.

Unter Path to executable sehen Sie einen Ordnerpfad wie C:\Users\Me\Desktop\project\Tor\Tor\tor.exe

Navigieren Sie zu C:\Users\Me\Desktop\project\Tor und klicken Sie mit der rechten Maustaste auf Tor. 

Wählen Sie property, security, edit und dann add..__ aus. Geben Sie im Textfeld LOCAL SERVICE ein, klicken Sie auf OK und aktivieren Sie das Kontrollkästchen FULL CONTROL

Klicken Sie erneut auf add, geben Sie NETWORK SERVICE ein, klicken Sie auf ok, und aktivieren Sie das Kontrollkästchen FULL CONTROL.

Klicken Sie dann auf OK (unten).

1
MagTun

In meinem Fall musste ich "Authentifizierte Benutzer" in der Liste "Gruppen- oder Benutzernamen" in dem Ordner hinzufügen, in dem die ausführbare Datei installiert wurde.

1
Sankar

Nachdem ich einige Stunden gegen meinen Schreibtisch geklopft hatte, als ich versuchte das herauszufinden, wurde meine "Main" -Methode irgendwie von ihrem Code geleert!

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] 
{ 
    new DMTestService()
};
ServiceBase.Run(ServicesToRun);

Andere Lösungen, die ich gefunden habe:

  • Aktualisieren des .NET-Frameworks auf 4.0 
  • Stellen Sie sicher, dass der Dienstname in InitializeComponent () der Eigenschaft des Installer-Dienstnamens entspricht

    private void InitializeComponent()
    ...
    this.ServiceName = "DMTestService";
    
  • Und ein Nice-Server-Neustart tut nicht weh

Szhlopp

0
Szhlopp

Ich habe sppsvc.exe mithilfe des Prozessmonitors überwacht und festgestellt, dass versucht wurde, den Schlüssel HKEY_LOCAL_MACHINE\SYSTEM\WPA zu schreiben. Nachdem ich NETWORK SERVICE Berechtigungen für diesen Schlüssel erteilt hatte, konnte ich den Dienst starten und Windows erkannte plötzlich, dass er erneut aktiviert wurde.

0

In meinem Fall habe ich das Projekt auf dem Desktop aufbewahrt und um auf den Desktop zuzugreifen, müssen wir dem Ordner die Berechtigung hinzufügen, sodass ich meinen Projektordner einfach in das Verzeichnis C:\verschoben habe. Jetzt funktioniert es wie ein Zauber.

0
Ali786

Ich hatte diese Ausgabe heute zu einem Dienst, den ich entwickelte, und keiner der anderen Vorschläge zu dieser Frage hat funktioniert. In meinem Fall hatte ich eine fehlende DLL-Abhängigkeit in dem Ordner, von dem aus der Dienst ausgeführt wurde.

Als ich die Abhängigkeiten hinzufügte, ging das Problem weg.

0
Frank Bryce

Für den Fehler 5 habe ich das Gegenteil der obigen Lösung getan. "Der erste Fehler 5: Zugriff verweigert wurde behoben, indem dem NETWORK SERVICE-Konto Berechtigungen für das Ausgabeverzeichnis erteilt wurden."

Ich habe mein Konto in ein lokales Konto geändert und nicht als Netzwerkdienstkonto. Da ich als Administrator angemeldet war, funktionierte es

0
Chris

Schauen Sie sich Process Utilities > Process monitor unter http://www.sysinternals.com an.

Mit diesem Tool können Sie die Aktivitäten eines Prozesses überwachen. Wenn Sie diesen Serviceprozess überwachen, sollte ein Zugriff irgendwo verweigert werden und auf welcher Ressource der Zugriff verweigert wird.

0

Wenn Sie diesen Fehler auf einem Server-Computer erhalten, geben Sie Zugriff auf den Ordner, in dem Sie das echte Windows-Dienstexe erhalten haben. Gehen Sie zur Registerkarte "Sicherheit", wählen Sie den lokalen Dienst als Benutzer aus und geben Sie vollständigen Zugriff. Sie sollten das gleiche auch für das Exe tun.

0
Darshana

Ich habe diese Fehlermeldung erhalten, weil ich die akzeptierte Antwort hier falsch gelesen habe: Windows-Dienst aus ausführbarer Datei erstellen .

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

Für <path_to_service_executable> verwendete ich den Pfad des Ordners der ausführbaren Datei, z. C:\Folder.

Es muss der Pfad der ausführbaren Datei sein, z. C:\Folder\Executable.exe.

Hoffentlich hilft das jemandem, der den gleichen dummen Fehler gemacht hat wie ich.

0

Ich weiß nicht, ob meine Antwort für viele sinnvoll wäre, aber auch ich war mit dem gleichen Problem konfrontiert und die Lösung war unglaublich einfach. Alles, was ich tun musste, war das Programm zu öffnen, mit dem ich den Code als Administrator ausgeführt habe. (Rechtsklick -> Als Administrator ausführen). 

Das war alles.

0
Rai

In manchen Fällen hat der freie Speicherplatz auf der lokalen Festplatte nicht mehr genügend Platz.

0

Ich habe versehentlich eingestellt, dass mein Dienst ausgeführt wird, da Local service die Lösung zu Local System wechseln sollte

0
meda

Wie aus dem Fehler-Popup hervorgeht, hängt dies mit der Berechtigung zusammen. Führen Sie den Dienst als "LocalSystem" -Konto aus.

Klicken Sie dazu mit der rechten Maustaste auf serviceProcessInstaller -> Properties -> Account und setzen Sie ihn auf "LocalSystem" anstatt auf den Standardwert "User". Installieren Sie den Dienst und voila.

0
Sisir