Como alterar o nome do serviço do Windows após criá-lo

19

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?

Sasikumar Murugesan
fonte

Respostas:

24

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:

  1. Pare o serviço. Você provavelmente confundirá o gerente de controle de serviço se fizer isso em um serviço em execução. (Você pode confundir de qualquer maneira, isso é muito hacky.)
  2. Abra regedit.exe(Editor do Registro).
  3. Navegue até HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicese localize a subchave com o nome do seu serviço.
  4. Clique com o botão direito do mouse na chave encontrada na etapa 3 e selecione Renomear. Digite o novo nome para o serviço.
  5. Reinicie o computador. 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 RegRenameKeyque 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
);
CBHacking
fonte
26

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" )

bfhd
fonte
1
Se o seu tomcat usar o programa de monitor, haverá um [oldservicename]w.exena sua unidade. Não se esqueça de alterar esse nome
Marged
11
Isso altera o nome de exibição do serviço e não o nome do serviço.
David Sherret 25/02
1
Nome do serviço e Nome para exibição são duas coisas diferentes. Nome de exibição, você o vê à primeira vista na janela de serviços. Nome do serviço, você precisa fazer Propriedades para vê-lo.
Sandburg