我已经为tomcat服务器创建了Windows服务,并且该服务运行良好,但是现在我想更改服务名称而不删除它。
因此,有没有任何cmd \ GUI步骤来更改服务名称?
我已经为tomcat服务器创建了Windows服务,并且该服务运行良好,但是现在我想更改服务名称而不删除它。
因此,有没有任何cmd \ GUI步骤来更改服务名称?
Answers:
如果您只想更改显示名称(这是列表中显示的名称Services.msc
,而不是“真实的”服务名称(这是包含服务信息并在其中使用的注册表项的名称),则@bfhd的答案将起作用。像的API OpenService
。此MSDN文章的 “备注”部分讨论了服务名与显示名。
不幸的是,没有正式的方法来更改服务的名称。但是,如果出于某种原因您绝对必须重命名服务而不是仅使用新名称重新安装该服务,则可能是可能的。请执行下列操作:
regedit.exe
(注册表编辑器)。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
并找到带有服务名称的子项。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
);
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"
)
[oldservicename]w.exe
驱动器上将有一个。不要忘记更改名称