Як змінити ім'я служби Windows після її створення


20

Я створив службу Windows для сервера tomcat, і вона працює добре, але тепер я хочу змінити назву служби, не видаляючи її.

тож чи є кроки cmd \ GUI для зміни назви служби?

Відповіді:


25

@ bfhd відповідь спрацює, якщо ви просто хочете змінити відображуване ім'я (це те, що відображається у списку в Services.msc, але це не "справжнє" ім'я служби (це ім'я ключа реєстру, що містить інформацію про службу, і використовується в APIs подобається OpenService). розділ зауважень цієї стаття MSDN каже про іменах служб проти відображаються імен трохи більше.

На жаль, немає офіційного способу зміни назви служби. Однак це, мабуть, можливо, якщо ви абсолютно зобов'язані перейменувати службу замість того, щоб просто перевстановити її під новою назвою чомусь. Зробіть наступне:

  1. Припиніть послугу. Ви, мабуть, заплутаєте менеджера управління сервісом, якщо це зробите в запущеній службі. (Ви можете це все сплутати, це дуже хакі.)
  2. Відкрити regedit.exe(Редактор реєстру).
  3. Перейдіть до HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesі знайдіть підрозділ із назвою вашої послуги.
  4. Клацніть правою кнопкою миші ключ, який ви знайшли на кроці №3, і виберіть Перейменувати. Введіть нову назву послуги.
  5. Перезавантажте комп'ютер. Services.exe, процес, у якому розміщений менеджер управління сервісом, не побачить зміни, якщо ви цього не зробите; спроби запустити перейменований процес (або взагалі іншим чином взагалі взаємодіяти з ним) не вдасться.

Я не обіцяю, що це працює. Але, мабуть, варто спробувати, якщо з якоїсь причини просто не можна перевстановити службу під новою назвою.

Якщо це потрібно робити програмно, може існувати функція, RegRenameKeyяка може зробити для вас четвертий крок вище. Я підкреслюю, що може існувати, оскільки, наскільки я можу сказати, ця функція є абсолютно неофіційною; це не в MSDN, і про нього є малоцінна інформація. Єдине, що я знайшов, окрім заголовків Windows (у яких є прототип і вказують, що це лише у Vista - NT6.0 - і новіших), - це форум на форумі Sysinternals , який вказує на те, що він викликає NT-системний виклик (також недокументований ). Прототип функції, від WinReg.h, є

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

27

Програма командного рядка Windows для зміни служб "sc".

Ось довідкова сторінка Microsoft: https://technet.microsoft.com/en-us/library/bb490995.aspx

Щоб змінити відображувану назву послуги, можна запустити:

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

Щоб змінити виконуваний файл, можна виконати:

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

Для обох цих команд, переконайтеся , що у вас є простір між = і новим ім'ям (наприклад. displayname= "New Name", НЕ displayname="New Name" )


1
Якщо ваш tomcat використовує програму монітора, [oldservicename]w.exeна вашому приводі з’явиться . Не забудьте змінити це ім'я
березня 1515

11
Це змінює відображуване ім'я служби, а не ім'я служби.
Девід Шеррет

1
Назва служби та ім'я відображення - це дві різні речі. Відображуване ім'я, ви бачите це з першого погляду у вікні послуг. Назва служби, ви повинні зробити "Властивості", щоб побачити її.
Сандберг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.