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?
fuente
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?
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:
regedit.exe
(Editor del registro).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
y busque la subclave con el nombre de su servicio.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 RegRenameKey
que 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
);
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"
)
[oldservicename]w.exe
en su disco. No olvides cambiar ese nombre