So ändern Sie den Windows-Dienstnamen nach dem Erstellen

19

Ich habe einen Windows-Dienst für den Tomcat-Server erstellt, der ordnungsgemäß ausgeführt wird. Jetzt möchte ich den Dienstnamen ändern, ohne ihn zu löschen.

Gibt es also irgendwelche Cmd \ GUI-Schritte, um den Dienstnamen zu ändern?

Sasikumar Murugesan
quelle

Antworten:

24

Die Antwort von @ bfhd funktioniert, wenn Sie nur den Anzeigenamen ändern möchten (der in der Liste angezeigt wird Services.msc, aber nicht der "echte" Dienstname ist (der Name des Registrierungsschlüssels, der die Dienstinformationen enthält und in verwendet wird) APIs wie. OpenService) Im Abschnitt "Bemerkungen" dieses MSDN-Artikels wird etwas mehr über Dienstnamen und Anzeigenamen gesprochen.

Leider gibt es keine offizielle Möglichkeit, den Namen eines Dienstes zu ändern. Es ist jedoch wahrscheinlich möglich, dass Sie den Dienst unbedingt umbenennen müssen , anstatt ihn aus irgendeinem Grund unter dem neuen Namen erneut zu installieren. Mach Folgendes:

  1. Beenden Sie den Dienst. Sie werden den Dienststeuerungs-Manager wahrscheinlich verwirren, wenn Sie dies für einen ausgeführten Dienst tun. (Sie können es irgendwie verwirren, das ist sehr hacky.)
  2. Öffnen Sie den regedit.exeRegistrierungseditor.
  3. Navigieren Sie zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesdem Unterschlüssel mit dem Namen Ihres Dienstes und suchen Sie ihn.
  4. Klicken Sie mit der rechten Maustaste auf den in Schritt 3 gefundenen Schlüssel und wählen Sie Umbenennen. Geben Sie den neuen Namen für den Dienst ein.
  5. Starte den Computer neu. Services.exeDer Prozess, der den Dienststeuerungs-Manager hostet, wird die Änderung nur dann sehen, wenn Sie dies tun. Versuche, den umbenannten Prozess zu starten (oder auf andere Weise überhaupt damit zu interagieren), schlagen fehl.

Ich verspreche nicht, dass dies funktioniert. Es ist jedoch wahrscheinlich einen Versuch wert, wenn es aus irgendeinem Grund nicht akzeptabel ist, den Dienst unter einem neuen Namen neu zu installieren.

Wenn Sie dies programmgesteuert ausführen müssen, ist möglicherweise eine Funktion vorhanden RegRenameKey, die den vierten Schritt oben für Sie ausführen kann. Ich Stress kann existieren , weil, soweit ich das beurteilen kann, ist diese Funktion völlig inoffiziell ist; Es ist nicht in MSDN und es gibt wertvolle kleine Informationen darüber. Das einzige, was ich gefunden habe, abgesehen von den Windows-Headern (die den Prototyp haben und anzeigen, dass es nur unter Vista - NT6.0 - und neuer ist), ist ein Sysinternals-Forumsbeitrag , der angibt, dass es einen NT-Systemaufruf aufruft (auch undokumentiert) ). Der Funktionsprototyp von WinReg.hist

WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
    _In_ HKEY hKey,
    _In_opt_ LPCWSTR lpSubKeyName,
    _In_ LPCWSTR lpNewKeyName
);
CBHacking
quelle
26

Das Windows-Befehlszeilenprogramm zum Ändern von Diensten lautet "sc".

Hier ist die Microsoft-Referenzseite: https://technet.microsoft.com/en-us/library/bb490995.aspx

So ändern Sie den Anzeigenamen eines Dienstes, den Sie ausführen können:

sc config "Old service name" displayname= "New service name"

Um die ausführbare Datei zu ändern, können Sie Folgendes ausführen:

sc config "Service name" binpath= "C:\path\to\executable\here"

Für diese beiden Befehle, stellen Sie sicher , dass Sie einen Raum zwischen den = und dem neuen Namen (dh. displayname= "New Name", NICHT displayname="New Name" )

bfhd
quelle
1
Wenn Ihr Kater das Monitorprogramm verwendet, befindet sich [oldservicename]w.exeauf Ihrem Laufwerk ein. Vergessen Sie nicht, diesen Namen zu ändern
Marged
11
Dies ändert den Anzeigenamen des Dienstes und nicht den Dienstnamen.
David Sherret
1
Dienstname und Anzeigename sind zwei verschiedene Dinge. Anzeigename, den Sie auf den ersten Blick im Dienstefenster sehen. Dienstname, müssen Sie Eigenschaften tun, um es zu sehen.
Sandburg