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

Sas*_*san 23 windows windows-services

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

那么是否有任何 cmd\GUI 步骤来更改服务名称?

bfh*_*fhd 35

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

这是 Microsoft 参考页面:https : //technet.microsoft.com/en-us/library/bb490995.aspx

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

sc config "Old service name" displayname= "New service name"
Run Code Online (Sandbox Code Playgroud)

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

sc config "Service name" binpath= "C:\path\to\executable\here"
Run Code Online (Sandbox Code Playgroud)

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

  • 这会更改服务的显示名称,而不是服务名称。 (16认同)

CBH*_*ing 32

@ bfhd的回答会工作,如果你只是想改变显示名称(这是在列表中显示的真实Services.msc,而不是“真正的”服务名(其中是包含服务信息的注册表项的名称,并在使用APIs like 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 系统调用(也未记录在案) )。函数原型来自WinReg.h,是

WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
    _In_ HKEY hKey,
    _In_opt_ LPCWSTR lpSubKeyName,
    _In_ LPCWSTR lpNewKeyName
);
Run Code Online (Sandbox Code Playgroud)

  • 使用 Windows PowerShell,有一种官方方法可以更改服务的“显示名称”和其他属性。请参阅 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-service?view=powershell-7.1 或网络搜索“如何更改 Windows 服务 powershell”。 (2认同)