Otrzymuję ten błąd, gdy próbuję uruchomić usługę systemu Windows utworzoną w języku C #:
Mój kod do tej pory:
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;
}
Aktualizacja nr 1
Powyższy problem rozwiązałem nadając uprawnienia do konta USŁUGA SIECIOWA ale teraz mam kolejny problem:
Aktualizacja nr 2
Nie można uruchomić usługi. System.InvalidOperationException: Usługa „RightAccessManagementWcf.RightAccessWcf” ma zerowe punkty końcowe aplikacji (niezwiązane z infrastrukturą). Może to być spowodowane tym, że nie znaleziono pliku konfiguracyjnego dla Twojej aplikacji lub nie można znaleźć elementu usługi pasującego do nazwy usługi w pliku konfiguracyjnym lub ponieważ w elemencie usługi nie zdefiniowano żadnych punktów końcowych. at System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoints (ServiceDescription description) at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost (ServiceDescription description, ServiceHostBase serviceHost) at System.Service.Servize.Service (SystemService.Servize.Service (SystemService.Servize) TimeSpan timeout) w System.ServiceModel.Channels.CommunicationObject.
źródło
Odpowiedzi:
Zdaję sobie sprawę, że ten post jest stary, ale nie ma zaznaczonego rozwiązania i chciałem tylko wrzucić, jak to rozwiązałem.
Pierwszy
Error 5: Access Denied
błąd rozwiązano, nadającNETWORK SERVICE
kontu uprawnienia do katalogu wyjściowego .Drugi
Started and then stopped
błąd wydaje się być ogólnym komunikatem, gdy coś spowodowało błąd usługi. Sprawdź w Podglądzie zdarzeń (w szczególności „Dzienniki systemu Windows> Aplikacja”) pod kątem prawdziwego komunikatu o błędzie.W moim przypadku było to złe ustawienie konfiguracji usługi w app.config.
źródło
Komputer -> Zarządzaj -> Usługa -> [Twoja usługa] właściwości. Następnie zakładka z informacjami o koncie. Graj z tymi ustawieniami, na przykład uruchamiaj usługę z kontem administratora.
To zrobiło to dla mnie.
EDYCJA: Problemem może być również to, że większość usług działa jako konta
LOCAL SERVICE
lubLOCAL SYSTEM
. Teraz, gdy uruchomiszC:/my-admin-dir/service.exe
te konta, ale nie mogą one wykonywać niczego w tym katalogu, otrzymaszerror 5
. Więc znajdź plik wykonywalny usługi, kliknij prawym przyciskiem myszy katalog -> Właściwości -> Zabezpieczenia i upewnij się, że konto, na którym usługa jest uruchamiana, znajduje się na liście użytkowników, którzy mogą mieć pełną kontrolę nad katalogiem.źródło
To zadziałało dla mnie.
źródło
Otrzymałem również ten sam błąd, rozwiązany przez kliknięcie prawym przyciskiem myszy na Usługa> Właściwości> Zaloguj się> zaloguj się jako: Lokalne konto systemowe.
źródło
Upewnij się, że
Path to executable
wskazuje rzeczywisty plik wykonywalny (usługa kliknij prawym przyciskiem myszy -> Właściwości -> karta Ogólne). Za pomocą powershell (i sc.exe) możesz zainstalować usługę bez wskazywania rzeczywistego pliku wykonywalnego ... ahem.źródło
Mam rozwiązanie:
teraz możesz spróbować uruchomić usługę.
źródło
Otrzymałem ten błąd, ponieważ źle odczytałem zaakceptowaną odpowiedź stąd: Utwórz usługę Windows z pliku wykonywalnego .
Dla
<path_to_service_executable>
używałem ścieżkę folderu wykonywalnego, npC:\Folder
.Musi to być ścieżka do pliku wykonywalnego , np
C:\Folder\Executable.exe
.źródło
W moim przypadku nie sprawdzono następujących.
źródło
Dla mnie - folder, z którego miała być uruchomiona usługa, oraz zawarte w niej pliki zostały zaszyfrowane za pomocą opcji Windows „Szyfruj”. Usunięcie tego i - voila!
źródło
Ten błąd występuje, gdy w
OnStart
metodzie wystąpił błąd . Nie można otworzyć hosta bezpośrednio wOnStart
metodzie, ponieważ w rzeczywistości nie otworzy się on po wywołaniu, ale zamiast tego będzie czekał na sterowanie. Musisz więc użyć wątku. To jest mój przykład.źródło
jeśli masz odmowę dostępu o kodzie błędu 5. prawdopodobnie w Twoim kodzie usługa próbuje wchodzić w interakcję z niektórymi plikami w systemie, np. zapisując do pliku dziennika
otwórz właściwości usług wybierz
log on
zakładkę i zaznacz opcję zezwalającą usłudze na interakcję z pulpitem,źródło
W moim przypadku musiałem dodać „Użytkownicy uwierzytelnieni” do listy „Nazwy grup lub użytkowników” w folderze, w którym zainstalowano plik wykonywalny.
źródło
Jedną z przyczyn tego błędu są niewystarczające uprawnienia (Użytkownicy uwierzytelnieni) w folderze lokalnym. Aby nadać uprawnienia „Uwierzytelnionym użytkownikom” Otwórz zakładkę zabezpieczeń we właściwościach swojego folderu, Edytuj i dodaj grupę „Użytkownicy uwierzytelnieni” i zastosuj zmiany.
Po wykonaniu tej czynności mogłem uruchamiać usługi nawet za pośrednictwem konta usługi sieciowej (wcześniej mogłem działać tylko z lokalnym kontem systemowym).
źródło
Miałem usługę Windows hostowaną przy użyciu OWIN i TopShelf. Nie mogłem go uruchomić. Ten sam błąd - „Odmowa dostępu 5”
Skończyło się na tym, że przekazałem wszystkie perms do mojego bin / Debug.
Problem nadal nie został rozwiązany.
Microsoft.Owin.Host.HttpListener
Zajrzałem więc do logów zdarzeń i okazało się, że nie ma go w bibliotece klas zawierającej klasę startową OWIN.Dlatego upewnij się, że sprawdziłeś dziennik zdarzeń, aby zidentyfikować główną przyczynę, zanim zaczniesz uzyskiwać uprawnienia itp.
źródło
Twój kod może działać w kontekście zabezpieczeń użytkownika, który nie może uruchomić usługi.
Ponieważ używasz WCF, domyślam się, że jesteś w kontekście USŁUGI SIECIOWEJ.
zobacz: http://support.microsoft.com/kb/256299
źródło
Użyj konta LocalSystem zamiast konta LocalService w Instalatorze usługi.
Można to zrobić, wykonując poniższe zmiany w widoku projektu instalatora usługi:
Właściwości instalatora procesu usługi -> Ustaw konto na system lokalny.
lub wykonując poniższą zmianę w pliku designer.cs instalatora usługi:
źródło
Kliknij prawym przyciskiem myszy
service
plik in service.msc i wybierzproperty
.Zobaczysz ścieżkę folderu pod
Path to executable
taką jak C: \ Users \ Me \ Desktop \ project \ Tor \ Tor \ tor.exePrzejdź do C: \ Users \ Me \ Desktop \ project \ Tor i kliknij prawym przyciskiem myszy Tor.
Wybierz
property
,security
,edit
a następnieadd
. W polu tekstowym wprowadźLOCAL SERVICE
, kliknij OK, a następnie zaznacz poleFULL CONTROL
Kliknij
add
ponownie, a następnie wprowadźNETWORK SERVICE
, kliknijok
, zaznacz poleFULL CONTROL
Następnie kliknij ok (na dole)
źródło
Przyjrzeć się
Process Utilities > Process monitor
z http://www.sysinternals.com .To narzędzie pozwala monitorować, co robi proces. Jeśli monitorujesz ten proces usługi, powinieneś zobaczyć gdzieś odmowę dostępu i na jakim zasobie jest udzielony odmowa dostępu.
źródło
Dla błędu 5 zrobiłem odwrotnie do powyższego rozwiązania. „Pierwszy błąd 5: błąd odmowy dostępu został rozwiązany przez przyznanie uprawnień do katalogu wyjściowego kontu usługi NETWORK SERVICE”.
Zmieniłem moje na konto lokalne, zamiast konta usługi sieciowej, a ponieważ byłem zalogowany jako administrator, zadziałało
źródło
Jeśli otrzymujesz ten błąd na serwerze, spróbuj udzielić dostępu do folderu, w którym masz prawdziwy exe usługi systemu Windows. Powinieneś przejść do zakładki bezpieczeństwa i wybrać usługę lokalną jako użytkownika i dać pełny dostęp. Powinieneś zrobić to samo dla exe.
źródło
Monitorowałem sppsvc.exe za pomocą monitora procesów i dowiedziałem się, że próbował on pisać do klucza HKEY_LOCAL_MACHINE \ SYSTEM \ WPA. Po nadaniu uprawnień NETWORK SERVICE do tego klucza, mogłem uruchomić usługę i Windows nagle rozpoznał, że została ponownie aktywowana.
źródło
Przypadkowo uruchomiłem usługę, ponieważ
Local service
rozwiązaniem było przejście naLocal System
źródło
Po kilku godzinach uderzania plecami w biurko, próbując to rozgryźć, w jakiś sposób moja metoda „główna” została opróżniona z kodu!
Inne rozwiązania, które znalazłem:
Upewnij się, że nazwa usługi wewnątrz InitializeComponent () jest zgodna z właściwością nazwy usługi instalatora
A przyjemny restart serwera nie zaszkodzi
Szhlopp
źródło
W przypadku, gdy systemowi zabraknie wolnego miejsca na dysku lokalnym.
źródło
Miałem dzisiaj ten problem w usłudze, którą opracowałem, i żadna z innych sugestii w tej kwestii nie zadziałała. W moim przypadku brakowało zależności .dll w folderze, z którego została uruchomiona usługa.
Kiedy dodałem zależności, problem zniknął.
źródło
W moim przypadku zachowałem projekt na pulpicie i aby uzyskać dostęp do pulpitu, musimy dodać uprawnienia do folderu, więc po prostu przeniosłem folder projektu do katalogu C: \, teraz działa jak urok.
źródło
Nie wiem, czy moja odpowiedź miałaby sens dla wielu, ale ja też stanąłem przed tym samym problemem, a rozwiązanie było skandalicznie proste. Wystarczyło, że otworzyłem program, którego użyłem do uruchomienia kodu jako administrator. (kliknij prawym przyciskiem myszy -> Uruchom jako administrator).
To było wszystko.
źródło
Jak sugeruje wyskakujące okienko błędu, jest to związane z uprawnieniami. Więc uruchom usługę jako konto „LocalSystem”.
Aby zrobić to samo, kliknij prawym przyciskiem myszy
serviceProcessInstaller -> Properties -> Account
i ustaw"LocalSystem"
zamiast domyślnego"User"
. Zainstaluj usługę i voila.źródło
sprawdź dziennik zdarzeń systemu Windows, aby uzyskać szczegółowy komunikat o błędzie. Rozwiązałem to samo po sprawdzeniu dziennika zdarzeń.
źródło
Miałem ten problem z usługą, którą wdrażałem, i żadna z innych sugestii w tym pytaniu nie zadziałała. W moim przypadku było tak, ponieważ mój plik .config (xml) był nieprawidłowy. Zrobiłem błąd kopiowania i wklejania podczas kopiowania z Qualif do Prod.
źródło