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?
la source
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?
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:
regedit.exe
(Éditeur du Registre).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
et recherchez la sous-clé avec le nom de votre service.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 RegRenameKey
qui 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
);
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"
)
[oldservicename]w.exe
sur votre disque. N'oubliez pas de changer ce nom