Come modificare il nome del servizio Windows dopo averlo creato


20

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:


25

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:

  1. Interrompere il servizio. Probabilmente confonderai il gestore controllo servizi se lo fai su un servizio in esecuzione. (Puoi confonderlo comunque, questo è molto confuso.)
  2. Apri regedit.exe(Editor del Registro di sistema).
  3. Passare a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicese trovare la sottochiave con il nome del servizio.
  4. Fai clic con il tasto destro del mouse sulla chiave che hai trovato nel passaggio 3 e seleziona Rinomina. Inserisci il nuovo nome per il servizio.
  5. Riavvia il computer. 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 RegRenameKeyche 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
);

26

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" )


1
Se il tuo tomcat utilizza il programma di monitoraggio, [oldservicename]w.exesul disco rigido verrà visualizzato un . Non dimenticare di cambiare quel nome
Marged

11
Ciò modifica il nome visualizzato del servizio e non il nome del servizio.
David Sherret,

1
Il nome del servizio e il nome visualizzato sono due cose diverse. Visualizza nome, lo vedi a prima vista nella finestra dei servizi. Nome del servizio, devi fare Proprietà per vederlo.
Sandburg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.