„Zugriff verweigert“ beim Versuch, den Dienst zu starten, selbst wenn er als Administrator/mit erhöhten Rechten ausgeführt wird

„Zugriff verweigert“ beim Versuch, den Dienst zu starten, selbst wenn er als Administrator/mit erhöhten Rechten ausgeführt wird

Ich verwende sc start "MyService"die Eingabeaufforderung „Administrator: Eingabeaufforderung“ mit erhöhten Rechten, erhalte jedoch die folgende Fehlermeldung:

[SC] StartService FEHLGESCHLAGEN 5:

Der Zugriff wird verweigert.

Der Vollständigkeit halber ist hier der Fehler beim Versuch, es über die GUI ( services.msc) auszuführen:

Fehler 5: Der Zugriff wird verweigert

Da es sich um einen .NET-Dienst handelt, wurde er mit (als Administrator ausführen) installiert InstallUtil.exe. Der Dienst ist so konfiguriert, dass er als NETZWERKDIENST ausgeführt wird, aber ich habe es auch mit LOKALER DIENST versucht.

Antwort1

Dies lag daran, dass weder der NETZWERKDIENST noch der LOKALE DIENST standardmäßig Leseberechtigungen für das Verzeichnis haben, in dem sich meine ausführbare Dienstdatei befindet. Ich musste ihnen (zumindest) Leseberechtigungen für den Ordner erteilen.

Antwort2

Ich bin auf genau dieses Problem gestoßen, war jedoch bestürzt, in den Antworten keine klaren Anweisungen zur Behebung des Problems zu finden. Hier also meine:

Schnell und dreckig

Die einfachste Lösung besteht darin , vor dem Ausführen der Befehle einfach sicherzustellen, dass die Anwendung, für die Sie einen Dienst installieren (in meinem konkreten Beispiel Tor), irgendwo liegt und NT AUTHORITY\LOCAL SERVICELeseberechtigung hat – beispielsweise :C:\Tor\

Persönlich verachte ich solche Lösungen.

Sauberer, lehrreicher und mühsamer

Ich habe Tor selbst installiert $env:UserProfile\AppData\Local\Programs. Folgendes habe ich unter Windows 10 mithilfe eines PowerShell-Terminals mit erhöhten Rechten gemacht:

PS C:\Users\User\AppData\Local\Programs>$fsar = New-Object 
System.Security.AccessControl.FileSystemAccessRule(`
>> "NT AUTHORITY\LOCAL SERVICE",`
>> "ReadAndExecute",`
>> "ContainerInherit,ObjectInherit",`
>> "InheritOnly",`
>> "Allow")

Dadurch entsteht eineDateisystemzugriffsregel(auf die ich mich im Code beziehe $fsar), das es der IdentityReference von „NT AUTHORITY\LOCAL SERVICE“ ermöglicht, jede Datei/jeden Ordner, auf die/den die Regel angewendet wird, und deren untergeordnete Elemente über die Vererbungsflags „ContainerInherit,ObjectInherit“ in Kombination mit dem PropagationFlag „InheritOnly“ zu lesen und auszuführen (und zu synchronisieren, ein Nebeneffekt davon). „Allow“ setzt die Regel auf „Zulassen“ (jede angewendete Ablehnung würde sie überschreiben, aber das wird wahrscheinlich nicht passieren).

Nun wollen wir diese Zugriffsregel auf den Ordner anwenden, in dem wir Tor installiert haben. Der erste Schritt ruft eine vorhandene ACL ab (damit wir nicht das durcheinanderbringen, was von Anfang an da war) mitGet-Acl. Der zweite Schritt fügt diese Zugriffsregel einfach dem Objekt hinzu, das wir in einer Variablen gespeichert haben. Der dritte Schritt speist die von uns geänderte Zugriffskontrollliste in den Befehl einSatz-Acldie wir auch mit dem Pfad zu unserem Tor-enthaltenden Ordner versehen.

PS C:\Users\User\AppData\Local\Programs>$torFolderAcl = Get-Acl .\MyTorFolder
PS C:\Users\User\AppData\Local\Programs>$torFolderAcl.AddAccessRule($fsar)
PS C:\Users\User\AppData\Local\Programs>$torFolderAcl | Set-Acl .\MyTorFolder

Sie sollten in der Lage sein, zu der Stelle in der Ordnerstruktur zu navigieren, an der sich Ihre tor.exeDatei befindet, und anschließend den Befehl auszuführen.

Nur-Tor-Sachen

Für diejenigen, die es nicht wissen: Es gibt eine integrierte Verknüpfung, mit der Sie dies tun können, ohne scdirekt oder über eine andere Serviceanwendung zu verfügen.

Wenn Sie die Datei an einem bestimmten Ort speichern torrcund sie vom Dienst verwenden lassen möchten, können Sie den Dienst wie folgt installieren:

PS C:\Users\User\AppData\Local\Programs\MyTorFolder>.\tor.exe --service install -options -f $pathToTorrc

Wenn Sie wie ich erwartet haben, dass das oben genannte ohne Probleme funktioniert, bevor Ihnen aufgefallen ist, dass es lästige Probleme bei der Zugriffskontrolle gibt, dann möchten Sie wahrscheinlich einfach Folgendes ausführen:

PS C:\Users\User\AppData\Local\Programs\MyTorFolder>.\tor.exe --service start

Ich hoffe, dass zumindest ein oder zwei Leute von dieser zusätzlichen Antwort profitieren. Wenn nicht, bin ich sicher, dass ich in ein oder zwei Jahren wieder hierher zurückkomme und sie selbst verwende, wenn ich unweigerlich vergesse, wie ich das beim ersten Mal gemacht habe ...

verwandte Informationen