Cómo cambiar el nombre del servicio de Windows después de crearlo

20

He creado el servicio de Windows para el servidor Tomcat y funciona bien, pero ahora quiero cambiar el nombre del servicio sin eliminarlo.

Entonces, ¿hay algún paso cmd \ GUI para cambiar el nombre del servicio?

Sasikumar Murugesan
fuente

Respuestas:

25

La respuesta de @ bfhd funcionará si solo desea cambiar el Nombre para mostrar (que es lo que se muestra en la lista Services.msc, pero no es el nombre de servicio "real" (que es el nombre de la clave de registro que contiene la información del servicio, y se utiliza en API como OpenService). La sección de Comentarios de este artículo de MSDN habla un poco más sobre los nombres de los servicios frente a los nombres para mostrar.

Desafortunadamente, no hay una forma oficial de cambiar el nombre de un servicio. Sin embargo, es probable que sea posible si debe cambiar el nombre del servicio en lugar de simplemente reinstalarlo con el nuevo nombre por algún motivo. Haz lo siguiente:

  1. Detén el servicio. Probablemente confundirá al administrador de control de servicio si hace esto en un servicio en ejecución. (De todos modos, puede confundirlo, esto es muy hacky).
  2. Abrir regedit.exe(Editor del registro).
  3. Navegue HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesy busque la subclave con el nombre de su servicio.
  4. Haga clic con el botón derecho en la clave que encontró en el paso 3 y seleccione Cambiar nombre. Ingrese el nuevo nombre para el servicio.
  5. Reinicia la computadora. Services.exe, el proceso que aloja el administrador de control de servicios no verá el cambio a menos que usted lo haga; los intentos de iniciar el proceso de cambio de nombre (o de lo contrario interactuar con él en absoluto) fallarán.

No prometo que esto funcione. Sin embargo, probablemente valga la pena intentarlo si, por alguna razón, reinstalar el servicio con un nuevo nombre es tan inaceptable.

Si debe hacer esto mediante programación, puede existir una función RegRenameKeyque puede hacer el cuarto paso anterior por usted. Puedo enfatizar que puede existir porque, hasta donde puedo decir, esta función es completamente no oficial; no está en MSDN y hay poca información valiosa al respecto. Lo único que encontré, aparte de los encabezados de Windows (que tienen el prototipo e indican que solo está en Vista - NT6.0 - y más reciente), es una publicación en el foro de Sysinternals , que indica que llama a un syscall de NT (también indocumentado ) La función prototipo, desde WinReg.h, es

WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
    _In_ HKEY hKey,
    _In_opt_ LPCWSTR lpSubKeyName,
    _In_ LPCWSTR lpNewKeyName
);
CBHacking
fuente
26

El programa de línea de comandos de Windows para cambiar servicios es "sc".

Aquí está la página de referencia de Microsoft: https://technet.microsoft.com/en-us/library/bb490995.aspx

Para cambiar el nombre para mostrar de un servicio que puede ejecutar:

sc config "Old service name" displayname= "New service name"

Para cambiar el ejecutable puedes ejecutar:

sc config "Service name" binpath= "C:\path\to\executable\here"

Para ambos comandos, asegúrese de tener un espacio entre = y el nuevo nombre (es decir displayname= "New Name", NO displayname="New Name" )

bfhd
fuente
1
Si su tomcat usa el programa de monitor, habrá un [oldservicename]w.exeen su disco. No olvides cambiar ese nombre
Marcado el
11
Esto cambia el nombre para mostrar del servicio y no el nombre del servicio.
David Sherret
1
El nombre del servicio y el nombre para mostrar son dos cosas diferentes. Nombre para mostrar, lo ve a primera vista en la ventana de servicios. Nombre del servicio, debe hacer Propiedades para verlo.
Sandburg