2008-12-01 15 views
130

Jak odinstalować usługę systemu Windows, gdy nie ma pliku wykonywalnego, który pozostanie w systemie? Nie mogę uruchomić installutil -u, ponieważ w systemie nie ma jeszcze plików wykonywalnych. Nadal widzę wpis dotyczący usługi w konsoli usług.Jak odinstalować usługę systemu Windows, gdy nie ma pliku wykonywalnego, który pozostał w systemie?

Przyczyną tego stanu jest prawdopodobnie problem w pakiecie msi, który nie usuwa poprawnie usługi, ale jak mogę to naprawić, gdy usługa jest w tym stanie?

+1

Możliwy duplikat [Jak odinstalować usługę Windows, jeśli pliki już nie istnieją?] (Http://stackoverflow.com/questions/197876/how-do-i-uninstall-a-windows-service-if-the-files-do-not-exist-anymore) – Pacerier

Odpowiedz

245

powinien być w stanie go odinstalować przy użyciu Sc.exe (myślę, że to jest wliczone w Windows Resource Kit), uruchamiając następujące w „Administrator” wierszu poleceń:

sc.exe delete <service name> 

gdzie <service name> to nazwa samej usługi, jak widać w konsoli zarządzania usługami, a nie exe.

Możesz znaleźć plik sc.exe w folderze System i do uruchomienia potrzebne są uprawnienia Administratora. More information in this Microsoft KB article.

Można również bezpośrednio wywołać api DeleteService(). Jest to nieco bardziej skomplikowane, ponieważ musisz uzyskać uchwyt do menedżera sterowania usługami poprzez OpenSCManager() itd., Ale z drugiej strony daje to większą kontrolę nad tym, co się dzieje.

+0

Zrobił dokładnie to, co chciałem i usunął usługę z rejestru. Nie pojawia się już w konsoli usług. Dzięki! –

+0

użyłem komendy installultil, ale sc również działa dobrze ... – dankyy1

+0

Otrzymuję komunikat "Odmowa dostępu". Co dalej? – Nick

3

Utwórz kopię plików wykonywalnych tej samej usługi i wklej ją na tę samą ścieżkę istniejącej usługi, a następnie odinstaluj.

+0

To dobra sugestia. Jeśli to nie zadziała, może być konieczne ponowne zainstalowanie, uruchomienie installutil -u, a następnie odinstalowanie – wcm

+0

czy musimy utworzyć kopię tego samego pliku exe lub zmienić nazwę dowolnego innego pliku, który działałby poprawnie? –

+0

@Samiksha, Myślałem, że powiedział, że nie ma "* kopii plików wykonywalnych *"? – Pacerier

10

found here

Próbowałem tylko na Windows XP, to działało

lokalny komputer: sc \\. usunąć [nazwa usługi]

Deleting services in Windows Server 2003 

    We can use sc.exe in the Windows Server 2003 to control services, create services and delete services. Since some people thought they must directly modify the registry to delete a service, I would like to share how to use sc.exe to delete a service without directly modifying the registry so that decreased the possibility for system failures. 

    To delete a service: 

    Click “start“ - “run“, and then enter “cmd“ to open Microsoft Command Console. 

    Enter command: 

    sc servername delete servicename 

    For instance, sc \\dc delete myservice 

    (Note: In this example, dc is my Domain Controller Server name, which is not the local machine, myservice is the name of the service I want to delete on the DC server.) 

    Below is the official help of all sc functions: 

    DESCRIPTION: 
    SC is a command line program used for communicating with the 
    NT Service Controller and services. 
    USAGE: 
      sc 
7

Moim ulubionym sposobem jest użycie aplikacji Sysinternals Autoruns. Po prostu wybierz usługę i naciśnij klawisz Delete.

+0

Dlaczego po prostu nie użyć 'sc delete'? – Pacerier

16

usunąć Windows usługi za pośrednictwem sekretariatu

bardzo łatwo usunąć usługę z rejestru, jeśli znasz właściwą drogę. Oto jak to zrobiłem:

  1. Run Regedit lub Regedt32

  2. Przejdź do wpisu rejestru "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services"

  3. Look za usługę że chcesz go usunąć i usunąć. Możesz spojrzeć na klawisze, aby dowiedzieć się, jakie pliki wykorzystała usługa i usunąć je (jeśli to konieczne).

Usuń usługi Windows za pomocą okna poleceń

Alternatywnie, można również użyć wiersza polecenia i usunąć usługę za pomocą następującego polecenia:

sc delete

Można również utwórz usługę, używając następującej komendy:

sc utwórz ścieżkę "MorganTechService" = "C: \ Program Files \ MorganTechSPace \ myservice.exe"

Uwaga: Być może trzeba będzie ponownie uruchomić system, aby zaktualizować listę w Menedżerze usług.

+3

Czy robi to rejestr bezpieczny sposób? Czy "wynik końcowy" rejestru jest taki sam jak "wynik końcowy" pliku 'sc delete'? – Pacerier

+3

Nie, po prostu próbowałem usunąć usługę bezpośrednio z regedit. W związku z tym wpis usługi, którą chciałem usunąć, pozostaje w usłudze, a jej opis pokazuje: "Nie można odczytać opisu. Kod błędu: 2>" –

+3

To działa, ale upewnij się, że uruchomiłeś ponownie! – Sam

7

Oto skrypt PowerShell usunąć usługę foo

$foo= Get-WmiObject -Class Win32_Service -Filter "Name='foo'" 
$foo.delete()