如何更改 Windows 服务的名称?
Posted
技术标签:
【中文标题】如何更改 Windows 服务的名称?【英文标题】:How can I change the name of a windows service? 【发布时间】:2011-04-22 16:35:48 【问题描述】:我有一个用 C# 开发的 Windows 服务应用程序。需要使用不同的配置文件运行相同的服务。要在同一台机器上运行这些,我需要更改服务的名称。我可以创建解决方案的多个副本,但不确定如何更改服务的名称。
谢谢
【问题讨论】:
【参考方案1】:在派生自ServiceBase
的win 服务类中,有一个可继承的属性,您可以将其设置为ServiceName
。您可以创建一个 app.config,为服务名称添加一个设置,并让您的 win 服务类相应地分配该属性。这样,只要您更改 app.config 中的设置,每个服务名称都将是唯一的。
【讨论】:
如果有人需要,这个例子会更详细地介绍它:codeproject.com/Articles/21320/… 对于 Joel 的链接,如何从安装程序中的 app.config 获取 ServiceName 的细节对我不起作用(可能已经过时,因为它是为 .NET 2.0 编写的),但是该解决方案运行良好:***.com/questions/8516701/…【参考方案2】:Windows 服务的配置存储在注册表中,位于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services... 您可能希望同时更改密钥的名称(“文件夹”、以及此处的服务的真实名称)和值“显示名称”。
use a tool like SC.EXE to configure services 可能会更好,以避免因注册表编辑错误而导致问题。虽然 SC 无法就地重命名服务,但它确实允许您删除和创建服务(只要确保所有设置正确!)。
【讨论】:
对不起,如果我的问题有点混乱......我想在解决方案本身中更改服务的名称。怎么办?【参考方案3】:服务名称也可以通过ProjectInstaller设计模式进行编辑。 ServiceInstaller中有一个名为ServiceName的属性。
【讨论】:
此外,EventLog 中出现的名称是在 Service 设计模式本身中通过属性 ServiceName 设置的。以上是关于如何更改 Windows 服务的名称?的主要内容,如果未能解决你的问题,请参考以下文章
更改 FriendlyName 注册表值后如何强制 Windows 设备管理器刷新设备名称显示