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:
- 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.)
- Abra
regedit.exe
(Editor do Registro). - Navegue até
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
e encontre a subchave com o nome do seu serviço. - 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.
- 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
);