J'ai créé le service Windows pour le serveur Tomcat et il fonctionne bien, mais je souhaite maintenant changer le nom du service sans le supprimer.
alors y at-il des étapes cmd\GUI pour changer le nom du service?
La réponse de @ bfhd fonctionnera si vous souhaitez simplement changer le nom d'affichage (ce qui est indiqué dans la liste dans Services.msc
, mais ce n'est pas le "vrai" nom de service (qui est le nom de la clé de registre contenant les informations de service, et utilisé). dans les API telles que OpenService
). La section Remarques de de cet article MSDN parle un peu plus des noms de service par rapport aux noms d'affichage.
Malheureusement, il n'y a pas de moyen officiel de changer le nom d'un service. Cependant, il est probablement possible, si vous devez absolument renommer le service au lieu de simplement le réinstaller sous le nouveau nom pour une raison quelconque. Faites ce qui suit:
regedit.exe
(Éditeur du registre).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
et recherchez la sous-clé portant le nom de votre service.Services.exe
, le processus qui héberge le gestionnaire de contrôle de service, ne verra pas le changement sauf si vous le voyez. les tentatives de démarrage du processus renommé (ou en fait d'interaction avec lui, en fait) échoueront.Je ne promets pas que cela fonctionne. Cela vaut probablement la peine d'essayer, cependant, si pour une raison quelconque, réinstaller le service sous un nouveau nom est si inacceptable.
Si vous devez le faire par programme, il peut exister une fonction RegRenameKey
qui peut effectuer la quatrième étape ci-dessus pour vous. Je souligne que peut exister parce que, pour autant que je sache, cette fonction est complètement non officielle; ce n'est pas dans MSDN et il y a peu d'informations précieuses à ce sujet. La seule chose que j'ai trouvée, à part les en-têtes Windows (qui ont le prototype et indiquent qu'il ne s'agit que de Vista - NT6.0 - et plus récent), est un post du forum Sysinternals , qui indique qu'il appelle un appel système NT (également non documenté). Le prototype de fonction, à partir de WinReg.h
, est
WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
_In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKeyName,
_In_ LPCWSTR lpNewKeyName
);
Le programme de ligne de commande Windows permettant de modifier les services est "sc".
Voici la page de référence Microsoft: https://technet.Microsoft.com/en-us/library/bb490995.aspx
Pour changer le nom d'affichage d'un service, vous pouvez exécuter:
sc config "Old service name" displayname= "New service name"
Pour changer l'exécutable, vous pouvez exécuter:
sc config "Service name" binpath= "C:\path\to\executable\here"
Pour ces deux commandes, assurez-vous de laisser un espace entre le = et le nouveau nom (c.-à-d. displayname= "New Name"
, NOTdisplayname="New Name"
)