创建后如何更改Windows服务名称


20

我已经为tomcat服务器创建了Windows服务,并且该服务运行良好,但是现在我想更改服务名称而不删除它。

因此,有没有任何cmd \ GUI步骤来更改服务名称?

Answers:


25

如果您只想更改显示名称(这是列表中显示的名称Services.msc,而不是“真实的”服务名称(这是包含服务信息并在其中使用的注册表项的名称),则@bfhd的答案将起作用。像的API OpenService此MSDN文章的 “备注”部分讨论了服务名与显示名。

不幸的是,没有正式的方法来更改服务的名称。但是,如果出于某种原因您绝对必须重命名服务而不是仅使用新名称重新安装该服务,则可能是可能的。请执行下列操作:

  1. 停止服务。如果您对正在运行的服务执行此操作,则可能会使服务控制管理器感到困惑。(无论如何,您可能会混淆它,这很hacky。)
  2. 打开regedit.exe(注册表编辑器)。
  3. 导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services并找到带有服务名称的子项。
  4. 右键单击在步骤3中找到的密钥,然后选择“重命名”。输入服务的新名称。
  5. 重新启动计算机。Services.exe,除非您这样做,否则托管服务控制管理器的过程将看不到更改;尝试启动重命名的过程(或者实际上根本不与之交互)的尝试将失败。

我不保证这项工作。但是,如果由于某种原因仅以新名称重新安装该服务是如此令人无法接受,则可能值得尝试。

如果您必须以编程方式执行此操作,则可能存在RegRenameKey可以为您执行上述第四步的功能。我强调可能存在,因为据我所知,此功能是完全不正式的。它不在MSDN中,并且关于它的信息很少。除了Windows标头(具有原型,并指示仅在Vista-NT6.0及更高版本上)外,我发现的唯一内容是Sysinternals论坛帖子,它指示它调用了NT syscall(也未记录)。来自的函数原型WinReg.h

WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
    _In_ HKEY hKey,
    _In_opt_ LPCWSTR lpSubKeyName,
    _In_ LPCWSTR lpNewKeyName
);

26

Windows更改服务的命令行程序是“ sc”。

这是Microsoft参考页:https : //technet.microsoft.com/zh-cn/library/bb490995.aspx

要更改服务的显示名称,可以运行:

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

要更改可执行文件,您可以运行:

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

对于这两个命令,请确保在=和新名称之间有一个空格(即displayname= "New Name"NOT displayname="New Name"


1
如果您的tomcat使用监视程序,则[oldservicename]w.exe驱动器上将有一个。不要忘记更改名称
-Marged

11
这将更改服务的显示名称,而不是服务名称。
David Sherret '16

1
服务名称和显示名称是两个不同的东西。显示名称,您会在服务窗口中第一眼看到它。服务名称,您必须执行属性才能看到它。
桑德堡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.