web-dev-qa-db-fra.com

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

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?

15
Sasikumar Murugesan

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:

  1. Arrêtez le service. Vous allez probablement confondre le gestionnaire de contrôle de service si vous procédez ainsi 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\Services et recherchez la sous-clé portant le nom de votre service.
  4. Cliquez avec le bouton droit sur la clé trouvée à l'étape 3 et sélectionnez Renommer. Entrez le nouveau nom du service.
  5. Redémarrer le PC. 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
);
24
CBHacking

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

20
bfhd