Wie deinstalliere ich einen Windows-Dienst, wenn auf dem System keine ausführbare Datei mehr vorhanden ist?


166

Wie deinstalliere ich einen Windows-Dienst, wenn auf dem System keine ausführbare Datei mehr vorhanden ist? Ich kann nicht ausgeführt werden, installutil -uda auf dem System keine ausführbare Datei mehr vorhanden ist. Ich kann immer noch einen Eintrag für den Dienst in der Dienstekonsole sehen.

Der Grund für diesen Status liegt wahrscheinlich in einem Problem im msi-Paket, das den Dienst nicht korrekt entfernt. Wie kann ich ihn jedoch beheben, wenn sich der Dienst in diesem Status befindet?


Antworten:


325

Sie sollten in der Lage sein, es mit sc.exe zu deinstallieren (ich glaube, es ist im Windows Resource Kit enthalten), indem Sie an einer Eingabeaufforderung "Administrator" Folgendes ausführen:

sc.exe delete <service name>

Wo <service name>ist der Name des Dienstes selbst, wie Sie ihn in der Dienstverwaltungskonsole sehen, nicht der Exe?

Sie finden sc.exe im Ordner System und es benötigt Administratorrechte, um ausgeführt zu werden. Weitere Informationen finden Sie in diesem Microsoft KB-Artikel .

Alternativ können Sie die API DeleteService () direkt aufrufen . Dieser Weg ist etwas komplexer, da Sie über OpenSCManager () usw. einen Handle an den Service Control Manager senden müssen , andererseits aber mehr Kontrolle darüber haben, was passiert.


Es hat genau das getan, was ich wollte und den Dienst aus der Registrierung entfernt. Es wird nicht mehr in der Dienstekonsole angezeigt. Vielen Dank!
Magnus Lindhe

Ich erhalte die Meldung "Zugriff verweigert". Was macht man als nächstes?
Nick

4
Nur ein Hinweis für alle, die versuchen, einen Befehl in Methode 1 in PowerShell: sc auszuführen, nicht für die Kommunikation mit dem Service Control Manager. Es ist der Befehl Set-Content. Verwenden Sie stattdessen sc.exe.
Yasser Sinjab

1
Wenn Sie Fehler 1072 erhalten, stellen Sie sicher, dass Sie das Service Control Panel nicht geöffnet haben (siehe diese andere Frage )
Giles

Ich habe den folgenden Fehler erhalten. [SC] OpenService FAILED 1060: Der angegebene Dienst ist nicht als installierter Dienst vorhanden. Später versuchte das gleiche mit Power Shell und es funktioniert!
Crazydan

24

Entfernen Sie den Windows-Dienst über die Registrierung

Es ist sehr einfach, einen Dienst aus der Registrierung zu entfernen, wenn Sie den richtigen Pfad kennen. So habe ich das gemacht:

  1. Führen Sie Regedit oder Regedt32 aus

  2. Gehen Sie zum Registrierungseintrag "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services".

  3. Suchen Sie nach dem Dienst, den Sie löschen möchten, und löschen Sie ihn. Sie können sich die Schlüssel ansehen, um zu erfahren, welche Dateien der Dienst verwendet hat, und sie auch löschen (falls erforderlich).

Löschen Sie den Windows-Dienst über das Befehlsfenster

Alternativ können Sie auch die Eingabeaufforderung verwenden und einen Dienst mit dem folgenden Befehl löschen:

sc löschen

Sie können den Dienst auch mit dem folgenden Befehl erstellen

sc create "MorganTechService" binpath = "C: \ Programme \ MorganTechSPace \ myservice.exe"

Hinweis: Möglicherweise müssen Sie das System neu starten, um die Liste im Service Manager zu aktualisieren.


3
Ist die Registrierung so sicher? Ist das "Endergebnis" der Registrierung das gleiche wie das "Endergebnis" von sc delete?
Pacerier

5
Nein, ich habe gerade versucht, einen Dienst direkt aus regedit zu löschen. Infolgedessen bleibt der Eintrag des Dienstes, den ich löschen wollte, im Dienst, während in der Beschreibung Folgendes angezeigt wird: "<Beschreibung konnte nicht gelesen werden. Fehlercode: 2>"
GJ.

11

hier gefunden

Ich habe gerade Windows XP ausprobiert, es hat funktioniert

lokaler Computer: sc \\. lösche [Dienstname]

  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

10

Hier ist das Powershell-Skript zum Löschen eines Dienstes foo

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


3

Erstellen Sie eine Kopie der ausführbaren Dateien desselben Dienstes, fügen Sie sie in denselben Pfad des vorhandenen Dienstes ein und deinstallieren Sie sie anschließend.


Das ist ein guter Vorschlag. Wenn das nicht funktioniert, muss er möglicherweise neu installieren, installutil -u ausführen und dann deinstallieren
wcm

Müssen wir die Kopie derselben Exe erstellen oder würde das Umbenennen einer anderen Datei gut funktionieren?
Imran Rizvi

@ Samiksha, ich dachte, er sagte, er hätte keine " Kopie der ausführbaren Dateien "?
Pacerier

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.