【发布时间】:2011-04-22 16:35:48
【问题描述】:
我有一个用 C# 开发的 Windows 服务应用程序。需要使用不同的配置文件运行相同的服务。要在同一台机器上运行这些,我需要更改服务的名称。我可以创建解决方案的多个副本,但不确定如何更改服务的名称。
谢谢
【问题讨论】:
标签: c# windows windows-services
我有一个用 C# 开发的 Windows 服务应用程序。需要使用不同的配置文件运行相同的服务。要在同一台机器上运行这些,我需要更改服务的名称。我可以创建解决方案的多个副本,但不确定如何更改服务的名称。
谢谢
【问题讨论】:
标签: c# windows windows-services
在派生自ServiceBase 的win 服务类中,有一个可继承的属性,您可以将其设置为ServiceName。您可以创建一个 app.config,为服务名称添加一个设置,并让您的 win 服务类相应地分配该属性。这样,只要您更改 app.config 中的设置,每个服务名称都将是唯一的。
【讨论】:
Windows 服务的配置存储在注册表中,位于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services... 您可能希望同时更改密钥的名称(“文件夹”、以及此处的服务的真实名称)和值“显示名称”。
use a tool like SC.EXE to configure services 可能会更好,以避免因注册表编辑错误而导致问题。虽然 SC 无法就地重命名服务,但它确实允许您删除和创建服务(只要确保所有设置正确!)。
【讨论】:
服务名称也可以通过ProjectInstaller设计模式进行编辑。 ServiceInstaller中有一个名为ServiceName的属性。
【讨论】: