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

13

Eu criei o serviço windows para o servidor tomcat e ele está funcionando bem, mas agora desejo alterar o nome do serviço sem excluí-lo.

Então, há alguma etapa cmd \ GUI para alterar o nome do serviço?

    
por Sasikumar Murugesan 21.09.2015 / 07:25

2 respostas

20

A resposta do @bfhd funcionará se você quiser apenas alterar o Nome de exibição (que é mostrado na lista em Services.msc , mas não é o nome do serviço "real" (que é o nome da chave do registro que contém o nome informações de serviço e usadas em APIs como OpenService . A seção Remarks de este artigo do MSDN fala sobre nomes de serviço versus nomes de exibição um pouco mais.

Infelizmente, não há uma maneira oficial de alterar o nome de um serviço. No entanto, é provavelmente possível, se você absolutamente deve renomear o serviço, em vez de simplesmente reinstalá-lo com o novo nome por algum motivo. Faça o seguinte:

  1. Pare o serviço. Você provavelmente confundirá o gerenciador de controle de serviço se fizer isso em um serviço em execução. (Você pode confundir isso de qualquer forma, isso é muito hacky.)
  2. Abra regedit.exe (Editor do Registro).
  3. Navegue até HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services e encontre 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 gerenciador de controle de serviço, não verá a mudança a menos que você o faça; tentativas de iniciar o processo renomeado (ou interagir com ele, na verdade) falharão.

Eu não faço promessas de que isso funcione. Provavelmente vale a pena tentar, no entanto, se por algum motivo apenas reinstalar o serviço com um novo nome for inaceitável.

Se você deve fazer isso de forma programática, existe may uma função RegRenameKey que pode fazer o quarto passo acima para você. Eu enfatizo que may existe porque, até onde eu sei, esta função é completamente não oficial; não está no MSDN e há poucas informações preciosas sobre isso. A única coisa que eu encontrei, além dos cabeçalhos do Windows (que têm o protótipo, e indicam que é apenas no Vista - NT6.0 - e mais recente), é um Post do 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
);
    
por 21.09.2015 / 08:17
17

O programa de linha de comando do Windows para alterar os serviços é "sc".

Esta é a página de referência da Microsoft: link

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 esses dois comandos, verifique se há um espaço entre o = e o novo nome (ou seja, displayname= "New Name" , NÃO displayname="New Name" )

    
por 21.09.2015 / 07:51