c# - Windows 服务 - 如何使名称可配置

标签 c# windows-services

我用 C# 编写了一个 Windows 服务。一开始的要求是我应该只运行该服务的一个实例,但情况已经改变,现在我需要多个实例。这就是为什么我需要根据配置文件更改服务名称。

用正确的名称注册的最佳方法是什么?我应该写另一个工具来做吗?我可以只从 App.config 文件中读取名称并相应地在服务和安装程序类中设置它吗?

PS> 我真的不明白那个有名字的东西是如何工作的——应该在服务和安装程序类中设置名称,但是当使用 installutil.exe 甚至 powershell new-service 安装时,也应该指定名称。那必须一样吗?或者一个覆盖另一个?

最佳答案

您可以简单地从 app.config 中读取它并在安装程序类中进行设置。
通常,会自动创建一个继承自 Installer 的类。它包含类型为 System.ServiceProcess.ServiceInstaller 的成员,很可能名为 serviceProcessInstaller1。这有一个属性 ServiceName你可以设置。此外,您需要设置 ServiceName ServiceBase 派生类的属性设置为相同的值。
在默认实现中,这些在各自的 InitializeComponent 方法中设置为常量值,但没有理由坚持这一点。它可以毫无问题地动态完成。

关于c# - Windows 服务 - 如何使名称可配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043663/

相关文章:

c# - 从大小为 n 的 r 个元素生成幂多重集

c# - 异常消息应该存储在哪里

c# - 为什么我需要 distinct 这个 LINQ 查询而不是 SQL

c# - 使用 ObjectContext.CreateQuery( Entity Framework 和存储库)加载相关实体(预加载)时遇到问题

c# - 获取应用程序内实现接口(interface)的所有对象

c++ - Windows服务Win10中的Toast通知

c# - 从 Windows 服务打印 EMF

c# - 如何从我的 Windows 服务中监听进程启动事件?

c# - WIX-Installer ServiceControl "sufficient privileges"错误

c# - 在Windows服务C#中访问网络路径