Jak zmienić nazwę usługi Windows po jej utworzeniu


20

Utworzyłem usługę systemu Windows dla serwera tomcat i działa ona dobrze, ale teraz chcę zmienić nazwę usługi bez jej usuwania.

więc czy są jakieś kroki cmd \ GUI, aby zmienić nazwę usługi?

Odpowiedzi:


25

Odpowiedź @ bfhd zadziała, jeśli chcesz tylko zmienić Nazwę wyświetlaną (która jest pokazana na liście w Services.msc, ale nie jest „prawdziwą” nazwą usługi (która jest nazwą klucza rejestru zawierającego informacje o usłudze i jest używana w Interfejsy API, takie jak OpenService) W części Uwagi w tym artykule MSDN omówiono nazwy usług w porównaniu z nazwami wyświetlanymi.

Niestety nie ma oficjalnego sposobu zmiany nazwy usługi. Jednakże, jest to prawdopodobnie możliwe, jeśli absolutnie muszą zmienić nazwę usługi, a nie tylko Ponowne zainstalowanie go pod nową nazwą dla jakiegoś powodu. Wykonaj następujące czynności:

  1. Zatrzymaj usługę. Prawdopodobnie pomylisz menedżera kontroli usług, jeśli robisz to na uruchomionej usłudze. (W każdym razie możesz to pomylić, jest to bardzo hacking.)
  2. Otwórz regedit.exe(Edytor rejestru).
  3. Przejdź do HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesi znajdź podklucz z nazwą usługi.
  4. Kliknij prawym przyciskiem myszy klucz znaleziony w kroku 3 i wybierz Zmień nazwę. Wprowadź nową nazwę usługi.
  5. Zrestartuj komputer. Services.exe, proces obsługujący menedżera kontroli usług, nie zobaczy zmiany, chyba że to zrobisz; próby rozpoczęcia procesu zmiany nazwy (lub w ogóle interakcji z nim w ogóle) zakończą się niepowodzeniem.

Nie obiecuję, że to zadziała. Prawdopodobnie warto jednak spróbować, jeśli z jakiegoś powodu ponowna instalacja usługi pod nową nazwą jest tak niedopuszczalna.

Jeśli musisz to zrobić programowo, może istnieć funkcja, RegRenameKeyktóra może wykonać czwarty krok powyżej. Podkreślam, że może istnieć, ponieważ, o ile wiem, ta funkcja jest całkowicie nieoficjalna; nie ma go w MSDN i jest o nim niewiele cennych informacji. Jedyną rzeczą, którą znalazłem, oprócz nagłówków Windows (które mają prototyp i wskazują, że jest to tylko w systemie Vista - NT6.0 - i nowszych), jest post na forum Sysinternals , który wskazuje, że wywołuje wywołanie systemowe NT (również nieudokumentowane ). Prototypem funkcji od WinReg.hjest

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

26

Program wiersza poleceń systemu Windows do zmiany usług to „sc”.

Oto strona referencyjna Microsoft: https://technet.microsoft.com/en-us/library/bb490995.aspx

Aby zmienić wyświetlaną nazwę usługi, możesz uruchomić:

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

Aby zmienić plik wykonywalny, możesz uruchomić:

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

Dla obu tych poleceń, upewnij się, że przestrzeń między = i nową nazwę (tj. displayname= "New Name", NOT displayname="New Name" )


1
Jeśli twój kocur używa programu monitorującego, [oldservicename]w.exena dysku pojawi się symbol. Nie zapomnij zmienić tej nazwy
Marged

11
Zmienia to wyświetlaną nazwę usługi, a nie nazwę usługi.
David Sherret,

1
Nazwa usługi i Nazwa wyświetlana to dwie różne rzeczy. Wyświetlana nazwa, zobaczysz ją na pierwszy rzut oka w oknie usług. Nazwa usługi, musisz zrobić Właściwości, aby ją zobaczyć.
Sandburg
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.