Я создал службу Windows для сервера Tomcat, и он работает нормально, но теперь я хочу изменить имя службы, не удаляя ее.
так есть ли какие-либо шаги cmd\GUI, чтобы изменить имя службы?
Я создал службу Windows для сервера Tomcat, и он работает нормально, но теперь я хочу изменить имя службы, не удаляя ее.
так есть ли какие-либо шаги cmd\GUI, чтобы изменить имя службы?
Ответ @ bfhd сработает, если вы просто захотите изменить отображаемое имя (которое показано в списке в Services.msc
, но не является "реальным" именем службы)(это имя раздела реестра, содержащего информацию службы, и используется в таких API, как OpenService
). В разделе "Примечания" этой статьи MSDN немного больше говорится об именах служб и отображаемых именах.
К сожалению, нет официального способа изменить название сервиса. Тем не менее, это возможно, если вам по какой-то причине необходимо переименовать службу, а не просто переустанавливать ее под новым именем. Сделайте следующее:
regedit.exe
(редактор реестра).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
и найдите подраздел с именем вашей службы.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
);
Программа командной строки 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"
)