Как изменить имя службы Windows после ее создания

20

Я создал службу Windows для сервера Tomcat, и он работает нормально, но теперь я хочу изменить имя службы без ее удаления.

так есть ли какие-либо шаги cmd \ GUI для изменения имени службы?

Сасикумар Муругесан
источник

Ответы:

25

Ответ @ bfhd сработает, если вы просто захотите изменить отображаемое имя (это то, что показано в списке Services.msc, но не «реальное» имя службы) (это имя раздела реестра, содержащего информацию о службе, которое используется в API, например 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
);
CBHacking
источник
26

Программа командной строки 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" )

bfhd
источник
1
Если ваш tomcat использует программу монитора, [oldservicename]w.exeна вашем диске будет значок. Не забудьте поменять это имя
Marged
11
Это изменяет отображаемое имя службы, а не имя службы.
Дэвид Шеррет
1
Название сервиса и отображаемое имя - две разные вещи. Отображаемое имя, вы видите его на первый взгляд в окне служб. Имя сервиса, вы должны сделать Свойства, чтобы увидеть его.
Сандбург