Ho creato il servizio Windows per Tomcat Server e funziona bene, ma ora voglio cambiare il nome del servizio senza eliminarlo.
quindi c'è qualche passaggio cmd \ GUI per cambiare il nome del servizio?
Ho creato il servizio Windows per Tomcat Server e funziona bene, ma ora voglio cambiare il nome del servizio senza eliminarlo.
quindi c'è qualche passaggio cmd \ GUI per cambiare il nome del servizio?
Risposte:
La risposta di @ bfhd funzionerà se si desidera solo cambiare il Nome visualizzato (che è quello mostrato nella lista in Services.msc
, ma non è il "vero" nome del servizio (che è il nome della chiave di registro che contiene le informazioni del servizio e usato in API come OpenService
) La sezione Note di questo articolo MSDN parla un po 'di più dei nomi dei servizi e dei nomi visualizzati.
Sfortunatamente, non esiste un modo ufficiale per cambiare il nome di un servizio. Tuttavia, è probabilmente possibile, se è assolutamente necessario rinominare il servizio anziché semplicemente reinstallarlo con il nuovo nome per qualche motivo. Fare quanto segue:
regedit.exe
(Editor del Registro di sistema).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
e trovare la sottochiave con il nome del servizio.Services.exe
, il processo che ospita il gestore controllo servizi, non vedrà la modifica a meno che tu non lo faccia; i tentativi di avviare il processo rinominato (o altrimenti interagire con esso, in realtà) falliranno.Non prometto che questo lavoro. Probabilmente vale la pena provare, tuttavia, se per qualche motivo la reinstallazione del servizio con un nuovo nome è così inaccettabile.
Se è necessario farlo a livello di codice, potrebbe esistere una funzione RegRenameKey
che può eseguire il quarto passaggio precedente. Sottolineo che può esistere perché, per quanto ne so, questa funzione è completamente non ufficiale; non è in MSDN e ci sono preziose informazioni a riguardo. L'unica cosa che ho trovato, a parte le intestazioni di Windows (che hanno il prototipo e indicano che è solo su Vista - NT6.0 e versioni successive), è un post sul forum Sysinternals , che indica che chiama un syscall NT (anche non documentato ). Il prototipo di funzione, da WinReg.h
, è
WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
_In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKeyName,
_In_ LPCWSTR lpNewKeyName
);
Il programma da riga di comando di Windows per modificare i servizi è "sc".
Ecco la pagina di riferimento di Microsoft: https://technet.microsoft.com/en-us/library/bb490995.aspx
Per modificare il nome visualizzato di un servizio è possibile eseguire:
sc config "Old service name" displayname= "New service name"
Per modificare il file eseguibile è possibile eseguire:
sc config "Service name" binpath= "C:\path\to\executable\here"
Per entrambi questi comandi, assicurati di avere uno spazio tra il = e il nuovo nome (es. displayname= "New Name"
, NOT displayname="New Name"
)
[oldservicename]w.exe
sul disco rigido verrà visualizzato un . Non dimenticare di cambiare quel nome