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?
quelle
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?
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:
regedit.exe
Registrierungseditor.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
dem Unterschlüssel mit dem Namen Ihres Dienstes und suchen Sie ihn.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 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.h
ist
WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
_In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKeyName,
_In_ LPCWSTR lpNewKeyName
);
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"
)
[oldservicename]w.exe
auf Ihrem Laufwerk ein. Vergessen Sie nicht, diesen Namen zu ändern