Zainstalowałem usługę Windows przy użyciu installUtil.exe.
Po aktualizacji kodu ponownie użyłem installUtil.exe, aby zainstalować usługę bez wcześniejszego odinstalowania oryginalnej wersji.
Kiedy teraz próbuję odinstalować usługę, program installUtil.exe pomyślnie zakończy odinstalowywanie, ale usługa nadal jest wyświetlana.
Jeśli próbuję zmienić jego właściwości, otrzymuję komunikat „usługa jest oznaczona do usunięcia”.
Jak mogę wymusić usunięcie (najlepiej bez ponownego uruchamiania serwera)?
.net
windows-services
Manu
źródło
źródło
Odpowiedzi:
Jedną rzeczą, która mnie złapała w przeszłości, jest to, że jeśli masz uruchomioną przeglądarkę usług, zapobiega to całkowitemu usunięciu usług, więc zamknij to wcześniej
źródło
Nie musisz ponownie uruchamiać komputera. Uruchom cmd lub PowerShell w trybie podwyższonym.
Wtedy zdobędziesz trochę informacji. Pojawi się numer PID.
Gdzie / f ma wymusić zatrzymanie.
Teraz możesz zainstalować lub uruchomić swoją usługę.
źródło
sc.exe queryex <SERVICENAME>
. Ponieważsc
jest to również alias dlaSet-Content
, CICHO zawiedzie, gdy go użyjesz.cóż, możesz użyć programu SC.EXE do wymuszenia usunięcia dowolnej usługi systemu Windows, jeśli odinstalowanie nie spowoduje usunięcia przez przypadek.
Przeczytaj więcej na temat „MS Techno Blogging” wymuszonego usuwania usług z usług MMC
źródło
sc delete
zgłosi również „usługa jest zaznaczona do usunięcia”, jeśli dla usługi jest otwarty uchwyt.Wiem, że to nie pomoże, ale może komuś pomóc w przyszłości.
Właśnie miałem ten sam problem, zamykając i ponownie otwierając menedżera usług, usunąłem zarówno wpis z rejestru, jak i zakończyłem odinstalowywanie usługi.
Wcześniej odświeżenie menedżera usług nie pomogło.
źródło
Po prostu upewnij się, że usługa została zatrzymana, zanim to zrobisz. Widziałem tę pracę przez większość czasu. Są chwile, w których widziałem, jak okna utknęły na czymś i nalegają na ponowne uruchomienie.
źródło
Zamknij okno cmd i usług, jeśli jest otwarte, a następnie uruchom ponownie cmd, klikając prawym przyciskiem myszy i wybierając opcję Uruchom jako administrator. Jeśli
sc delete sericeName
nie działa lub nic nie działa.http://weblogs.asp.net/avnerk/archive/2007/09/05/windows-services-services-msc-and-the-quot-this-service-is-marked-for-deletion-quot-error. aspx
źródło
Niestety musisz zrestartować serwer. Powinno to usunąć „usuniętą” usługę.
źródło
Na wszelki wypadek, gdyby ta odpowiedź komuś pomogła : jak stwierdzono tutaj , możesz zaoszczędzić sobie wielu problemów z uruchamianiem Sysinternals Autoruns jako administrator. Po prostu przejdź do zakładki „Usługi” i usuń usługę.
Udało mi się to na komputerze, na którym nie miałem żadnych uprawnień do edycji rejestru.
źródło
Możesz ręcznie usunąć klucz rejestru dla swojej usługi, znajdujący się pod adresem
HKLM\SYSTEM\CurrentControlSet\Services
, po czym usługa nie będzie widoczna w menedżerze kontroli usług (musisz odświeżyć lub ponownie otworzyć, aby zobaczyć zmianę) i możesz ponownie zainstalować usługę w zwykły sposób.źródło
Następujące czynności będą działać bez ponownego uruchamiania maszyny:
źródło
Czy próbowałeś zatrzymać usługę przed wywołaniem dezinstalacji? Miałem ten problem losowo. Czasami mogłem go usunąć bez ponownego uruchamiania. Domyślam się, że ma to związek z tym, że usługa nadal działa
źródło
Spóźniłem się, ale chciałbym dodać alternatywę, która może wyglądać dziwnie, ale nie widziałem innego sposobu:
Ponieważ każdej nocy instaluję usługi Windows w procesie CI, potrzebowałem czegoś, co działa przez cały czas i jest całkowicie zautomatyzowane. Z jakiegoś powodu usługi były zawsze oznaczane do usunięcia przez długi czas (5 minut lub dłużej) po ich odinstalowaniu. Dlatego rozszerzyłem skrypt wsadowy ponownej instalacji, aby upewnić się, że usługa jest naprawdę usunięta (wersja uproszczona):
Widzę, że usługa jest oznaczona do usunięcia przez około 5 minut (!), Aż w końcu przejdzie. Wreszcie, nie potrzebuję już żadnych ręcznych interwencji. W przyszłości wydłużę skrypt tak, aby coś się działo po pewnym czasie (np. Powiadomienie po 30 minutach).
źródło
To zadziałało dla mnie
źródło
ReturnValue : 16
, polecenie zakończyło się niepowodzeniem z komunikatem „ Ta usługa jest usuwana z systemu ”. Pełna lista wartości ReturnValues firmy Microsoft tutajJeśli nie możesz zatrzymać usługi w usługach , możesz zatrzymać exe usługi systemu Windows w Menedżerze zadań . Następnie możesz usunąć usługę.
źródło
Odświeżenie listy usług zawsze robiło to za mnie. Jeśli okno usług jest otwarte, z jakiegoś powodu będzie przechowywać jego pamięć. F5 i ponownie instaluję ponownie!
źródło
Upewnij się również, że nie ma nadal aktywnych wystąpień pliku wykonywalnego (być może takiego, który mógł z jakiegoś powodu działać niezależnie od usługi).
Otwierałem i zamykałem MMC i szukałem PID-ów do zabicia - ale kiedy szukałem w eksploratorze procesów, było kilka istniejących procesów uruchomionych z zapomnianej zaplanowanej partii. Zabiłem ich. Zadanie wykonane.
źródło
Na forum jest mnóstwo pytań na ten temat.
Znalazłem odpowiedź w Windows API. Po odinstalowaniu usługi nie musisz ponownie uruchamiać komputera. Musisz zadzwonić:
To zamyka uchwyt usługi. W systemie Windows 7 rozwiązało to mój problem. Ja robię:
źródło
Używam następującego programu PowerShell połączonego razem z kilku miejsc dla naszych wystąpień Octopus Deploy, gdy TopShelf się psuje lub usługa nie działa z innego powodu.
źródło
Warto również zauważyć, że to:
nie działa w PowerShell, sc jest aliasem dla polecenia cmdlet Set-Content w PowerShell. Musisz zrobić:
źródło