Eu criei o serviço windows para o servidor tomcat e ele está funcionando bem, mas agora quero alterar o nome do serviço sem excluí-lo.
Então, existem etapas cmd \ GUI para alterar o nome do serviço?
Eu criei o serviço windows para o servidor tomcat e ele está funcionando bem, mas agora quero alterar o nome do serviço sem excluí-lo.
Então, existem etapas cmd \ GUI para alterar o nome do serviço?
Respostas:
A resposta do @ bfhd funcionará se você quiser apenas alterar o Nome para Exibição (que é mostrado na lista Services.msc
, mas não é o nome "real" do serviço (que é o nome da chave do registro que contém as informações do serviço e usado em APIs como OpenService
) .A seção Comentários deste artigo da MSDN fala sobre nomes de serviço x nomes de exibição um pouco mais.
Infelizmente, não existe uma maneira oficial de alterar o nome de um serviço. No entanto, provavelmente é possível, se você precisar renomear o serviço em vez de apenas reinstalá-lo com o novo nome por algum motivo. Faça o seguinte:
regedit.exe
(Editor do Registro).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
e localize a subchave com o nome do seu serviço.Services.exe
, o processo que hospeda o gerente de controle de serviço, não verá a alteração, a menos que você o faça; as tentativas de iniciar o processo renomeado (ou de alguma forma interagir com ele, na verdade) falharão.Não prometo que isso funcione. Provavelmente vale a pena tentar, se por algum motivo apenas reinstalar o serviço com um novo nome for tão inaceitável.
Se você deve fazer isso programaticamente, pode existir uma função RegRenameKey
que pode executar a quarta etapa acima para você. Enfatizo que pode existir porque, até onde sei, essa função é completamente não oficial; não está no MSDN e há poucas informações preciosas sobre ele. A única coisa que encontrei, além dos cabeçalhos do Windows (que têm o protótipo e indicam que ele está apenas no Vista - NT6.0 - e mais recente), é uma postagem no fórum da Sysinternals , que indica que ele chama um syscall do NT (também não documentado) ) O protótipo de função, de WinReg.h
, é
WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
_In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKeyName,
_In_ LPCWSTR lpNewKeyName
);
O programa de linha de comando do Windows para alterar serviços é "sc".
Aqui está a página de referência da Microsoft: https://technet.microsoft.com/en-us/library/bb490995.aspx
Para alterar o nome de exibição de um serviço, você pode executar:
sc config "Old service name" displayname= "New service name"
Para alterar o executável, você pode executar:
sc config "Service name" binpath= "C:\path\to\executable\here"
Para ambos os comandos, verifique se há um espaço entre o = e o novo nome (por exemplo displayname= "New Name"
, NOT displayname="New Name"
)
[oldservicename]w.exe
na sua unidade. Não se esqueça de alterar esse nome