Comment changer le nom du service Windows après l'avoir créé

20

J'ai créé un service Windows pour le serveur Tomcat et il fonctionne bien, mais maintenant je veux changer le nom du service sans le supprimer.

y a-t-il donc des étapes cmd \ GUI pour changer le nom du service?

Sasikumar Murugesan
la source

Réponses:

25

La réponse de @ bfhd fonctionnera si vous voulez simplement changer le nom d'affichage (qui est affiché dans la liste Services.msc, mais qui 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 API comme OpenService) .La section Remarques de cet article MSDN parle un peu plus des noms de service et des noms d'affichage.

Malheureusement, il n'y a aucun 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. Procédez comme suit:

  1. Arrêtez le service. Vous confondrez probablement le gestionnaire de contrôle des services si vous le faites sur un service en cours d'exécution. (Vous pouvez le confondre de toute façon, c'est très hacky.)
  2. Ouvrez regedit.exe(Éditeur du Registre).
  3. Accédez à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Serviceset recherchez la sous-clé avec le nom de votre service.
  4. Cliquez avec le bouton droit sur la clé que vous avez trouvée à l'étape 3 et sélectionnez Renommer. Saisissez le nouveau nom du service.
  5. Redémarrer le PC. Services.exe, le processus qui héberge le gestionnaire de contrôle des services, ne verra le changement que si vous le faites; les tentatives de démarrage du processus renommé (ou d'interaction avec lui, en fait) échouent.

Je ne fais aucune promesse de ce fonctionnement. Cela vaut probablement la peine d'essayer, si pour une raison quelconque, la simple réinstallation du service sous un nouveau nom est si inacceptable.

Si vous devez le faire par programme, il peut exister une fonction RegRenameKeyqui peut effectuer la quatrième étape ci-dessus pour vous. Je le stress peut exister parce que, pour autant que je peux dire, cette fonction est tout à fait non officielle; ce n'est pas dans MSDN et il y a de précieuses informations à ce sujet. La seule chose que j'ai trouvée, à part les en-têtes Windows (qui ont le prototype et indiquent que ce n'est que sur Vista - NT6.0 - et plus récent), est un message du forum Sysinternals , qui indique qu'il appelle un appel système NT (également non documenté ). Le prototype de fonction, de WinReg.h, est

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

Le programme de ligne de commande Windows pour modifier les services est "sc".

Voici la page de référence Microsoft: https://technet.microsoft.com/en-us/library/bb490995.aspx

Pour modifier le nom d'affichage d'un service, vous pouvez exécuter:

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

Pour modifier l'exécutable, vous pouvez exécuter:

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

Pour ces deux commandes, assurez-vous d'avoir un espace entre le = et le nouveau nom (c.-à-d. displayname= "New Name", PAS displayname="New Name" )

bfhd
la source
1
Si votre tomcat utilise le programme moniteur, il y en aura un [oldservicename]w.exesur votre disque. N'oubliez pas de changer ce nom
Margé le
11
Cela modifie le nom d'affichage du service et non le nom du service.
David Sherret
1
Le nom du service et le nom d'affichage sont deux choses différentes. Nom d'affichage, vous le voyez à première vue dans la fenêtre des services. Nom du service, vous devez faire Propriétés pour le voir.
Sandburg