it-swarm.com.de

So ändern Sie den Windows-Dienstnamen nach dem Erstellen

Ich habe einen Windows-Dienst für 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?

15

Die Antwort von @ bfhd funktioniert, wenn Sie nur den Anzeigenamen ändern möchten (der in der Liste in Services.msc angezeigt wird, aber nicht der "echte" Dienstname ist (der Name des Registrierungsschlüssels, der die Dienstinformationen enthält, und verwendet wird) In APIs wie OpenService). Der Abschnitt "Bemerkungen" in diesem MSDN-Artikel befasst sich ein wenig mehr mit Dienstnamen und Anzeigenamen.

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 nur 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 regedit.exe (Registrierungseditor).
  3. Navigieren Sie zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services und suchen Sie den Unterschlüssel mit dem Namen Ihres Dienstes.
  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.exe, der 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 RegRenameKey vorhanden, die den vierten Schritt oben für Sie ausführen kann. Ich betone kann existieren, weil, soweit ich das beurteilen kann, 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 ein NT-Systemaufruf aufgerufen wird (auch undokumentiert). Der Funktionsprototyp von WinReg.h ist

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

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"

Stellen Sie bei beiden Befehlen sicher, dass zwischen dem = und dem neuen Namen ein Leerzeichen steht (z. B. displayname= "New Name", NOTdisplayname="New Name")

20
bfhd